参照上一篇博客,这里只修改服务器端:Server.java,这样可以让服务器端接受多个客户端的消息。(采用多线程的方法)
public class Server {
public static void main(String[] args) {
ServerSocket serverSocket = null;
try{
serverSocket = new ServerSocket(4700);
}catch(IOException e){
e.printStackTrace();
}
int count = 0;
while(true){
try{
Socket socket = serverSocket.accept();
count ++;
System.out.println("creat "+count +" socket");
new ServerThread(socket);
}catch(IOException e){
e.printStackTrace();
}
}
}
}
class ServerThread implements Runnable{
private Socket socket;
public ServerThread(Socket socket){
this.socket = socket;
new Thread(this).start();
}
public void run(){
BufferedReader in = null;
BufferedReader sin = null;
PrintWriter out = null;
String line = "";
try {
sin = new BufferedReader(new InputStreamReader(System.in));
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream());
//
System.out.println("the server accept data:\t"+in.readLine());
line = sin.readLine();
while(!line.equalsIgnoreCase("bye")){
out.println(line);
out.flush();
System.out.println("server send data:\t"+line);
System.out.println("server accept date:\t"+in.readLine());
line = sin.readLine();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行结果如下: