0

下面的代码是服务器只接受一个客户端。有人可以解释一下,如何让服务器接受例如两个客户端?非常感谢您的帮助。

public class test{
private static ServerSocket server;
private static Socket client;
private static BufferedReader reader;
private static String text;

public static void main(String args[])throws IOException{

    server=new ServerSocket(63400);
    System.out.println("Waiting for client...");
    client=server.accept();

    reader=new BufferedReader(new InputStreamReader(client.getInputStream()));

    while((text=reader.readLine())!=null)
        System.out.println(text);
}}
4

2 回答 2

2

accept()返回时,将 传递给Socket一个新Thread创建的来处理该客户端;然后循环回来并accept()再次调用。

如果这听起来太复杂,那么您是在尝试先跑再走。您需要了解循环线程,然后才能解决它。

于 2013-07-06T18:23:24.240 回答
1

处理您的客户线程。下面的代码被简化了!

public class ClientHandler extends Thread {
  Socket client;
  InputStream inputstream;

  public ClientHandler(Socket client) {
    this.client= client;
    inputstream = client.getInputStream();
  }

  @Override
  public void run() {
    BufferedReader reader=new BufferedReader(new InputStreamReader(inputstream));
    String text;

    while((text=reader.readLine())!=null)
      System.out.println(text);
  }
}
于 2013-07-06T18:34:44.667 回答