问题是当前您正在接受连接,但是随后立即对其进行阻塞读取,直到连接关闭:
// After a few changes...Socket clientSocket = serverSocket.accept();BufferedReader in = new BufferedReader(new InputStreamReader( clientSocket.getInputStream()));String nextLine;while ((nextLine = in.readLine()) != null) { System.out.println(nextline);}这意味着接受连接的同一线程正在尝试 处理 该连接。这样一来,您将无法同时使用多个连接。
而是创建一个实现的类(例如
ConnectionHandler)
Runnable,并让构造函数接受
Socket。它的
run方法应该处理连接。然后将代码更改为:
Socket clientSocket = serverSocket.accept();Runnable connectionHandler = new ConnectionHandler(clientSocket);new Thread(connectionHandler).start();
这将使您的“主”线程有空等待下一个连接。
(顺便说一句,
KnockKnockProtocol该类并不是真正的“外部”类,它是示例的一部分。他们只是不清楚源在这里
…)



