Lle*_*lis 2 java network-programming serversocket
我有一个java.net.ServerSocket用于侦听连接。我正在使用它的accept()方法来从客户端获取连接,然后适当地处理它们。我希望不断倾听客户的声音,永远不要让他们无法使用。目前我有类似的代码:
ServerSocket serverSocket = ...
while (shouldBeListening) {
handleClient(serverSocket.accept());
}
Run Code Online (Sandbox Code Playgroud)
该handleClient方法可能需要少量时间(小于十分之一毫秒)。我担心在ServerSocket.accept()方法返回和再次调用之间可能会错过连接请求。解决此问题的最佳方法是什么?
编辑:我实现它的方式目前在handleClient方法中创建了一个新线程,但即使这样也需要时间(特别是因为这是在Raspberry Pi上运行的),我担心如果handleClient在执行方法时请求连接那么它可能会被拒绝,因为accept()没有被运行。
像这样的东西。
ServerSocket listener = new ServerSocket(8001);
try {
while (true) {
Socket socket = listener.accept();
Run Code Online (Sandbox Code Playgroud)
然后您可以将套接字引用传递给您拥有的处理程序类。使该类实现Runnable。每次将套接字引用传递给处理程序类时,都会创建一个新线程以同时处理请求。请参阅以下链接以获取解决方案。如果您需要完整的代码。让我知道。