用于监听套接字的无限循环

时间:2014-12-17 07:21:09

标签: sockets infinite-loop serversocket

我有一个实现,我在那里收听事件的端口并根据输入进行处理。我把它保持在无限循环中。但它只能工作一次然后我必须重新启动程序。控制永远不会回来。这个无限循环是个好主意吗?

Integer port = Integer.parseInt(Configuration.getProperty("Environment", "PORT"));
ServerSocket serverSocket = new ServerSocket(port);
LOG.info("Process Server listening on PORT: " + port);
while(true){            
    Socket socket = serverSocket.accept();
    new Thread(new ProcessEvent(socket)).start();
}

1 个答案:

答案 0 :(得分:1)

启动处理客户端的线程后,还需要循环读取函数,因为在阅读完消息后,您需要阅读下一条消息。 accept()每个客户端连接只返回一次。打开连接后,所有内容都会在线程中发生,直到连接关闭。

循环accept()是一个好主意,但只要您的客户端已连接,生成的线程就不能退出。如果您故意关闭连接,那么如果您确保双方都能正确处理它,那么它应该没问题,并且客户端需要重新打开连接以进行进一步的通信。

相关问题