java socket 多客户端和服务器的通信(二)

2014-11-24 10:11:54 · 作者: · 浏览: 1
tion e)
{
e.printStackTrace();
}
System.out.println("Server Message:" + str);
}
}
}

服务器端:
[java]
package com.lip;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server
{

/**
* Author:Lip Desc:SSD8_exercise1
*/
public static int PORT = 8000;
public static String HOST = "127.0.0.1";

public static void main(String[] args)
{
ServerSocket serverSocket = null;
Socket socket = null;
try
{
serverSocket = new ServerSocket(PORT);
// 等待请求,无请求一直等待
while (true)
{
System.out.println("Waiting Client");
socket = serverSocket.accept();// 接受请求
System.out.println("Client Conect!");
new ThreadedServer(socket);
}
}
catch (Exception e)
{
try
{
socket.close();
}
catch (IOException e1)
{
e1.printStackTrace();
}
}
finally
{
try
{

serverSocket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}

}

}

辅助线程:
[java]
package com.lip;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

public class ThreadedServer extends Thread
{

private Socket socket = null;
private BufferedReader br = null;
private PrintWriter pw = null;
private Scanner scanner = null;

public ThreadedServer(Socket s)
{
socket = s;
try
{
br = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
pw = new PrintWriter(
new BufferedWriter(new OutputStreamWriter(
socket.getOutputStream())), true);
scanner = new Scanner(System.in);// 从键盘读取数据
start();
}
catch (Exception e)
{

e.printStackTrace();
}
}

public void run()
{
new ReadCl