我正在制作一个客户端服务器程序,我正在创建一个多线程服务器,因此它可以同时处理多个客户端。我看过一些例子,但有些东西让我对它们的工作方式感到困惑。 这两个类: http://docs.oracle.com/javase/tutorial/networking/sockets/examples/KKMultiServer.java
http://docs.oracle.com/javase/tutorial/networking/sockets/examples/KKMultiServerThread.java
用于多线程服务器,但令我困惑的部分如下:
while (listening) {
new KKMultiServerThread(serverSocket.accept()).start();
}
对我来说,看起来服务器正在创建无限量的KKMultiServerThreads,当套接字没有连接时,它只传递null。这是如何工作的?
答案 0 :(得分:2)
我还没有看到你的代码。但我对这个问题有一些看法。在
serverSocket.accept()
是阻塞方式(功能)。如果您没有输入内容,程序将等待您的输入。我认为它不会自动返回null。
答案 1 :(得分:0)
ServerSocket.accept()
阻塞,直到发生传入连接。它不会返回null。