我有一个实现,我在那里收听事件的端口并根据输入进行处理。我把它保持在无限循环中。但它只能工作一次然后我必须重新启动程序。控制永远不会回来。这个无限循环是个好主意吗?
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();
}
答案 0 :(得分:1)
启动处理客户端的线程后,还需要循环读取函数,因为在阅读完消息后,您需要阅读下一条消息。 accept()
每个客户端连接只返回一次。打开连接后,所有内容都会在线程中发生,直到连接关闭。
循环accept()
是一个好主意,但只要您的客户端已连接,生成的线程就不能退出。如果您故意关闭连接,那么如果您确保双方都能正确处理它,那么它应该没问题,并且客户端需要重新打开连接以进行进一步的通信。