我有一个实现,其中我监听事件的端口并根据输入进行处理。我将其保持在无限循环中。但是,它只能运行一次,然后我必须再次重新启动该程序。控制永远不会回来。这个无限循环是个好主意吗?
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();
}
最佳答案
一旦启动了处理客户端的线程,您还需要循环读取函数,因为在读取一条消息之后,您将需要读取下一条消息。每个客户端连接accept()
仅返回一次。打开连接后,线程中所有操作都会发生,直到关闭连接为止。
在accept()
上循环是个好主意,但是只要连接了客户端,就不能退出生成的线程。如果您有意关闭连接,则可以确保双方都正确处理了它,并且客户端需要重新打开连接以进行进一步的通信,这应该没问题。
关于sockets - 无限循环监听套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27520201/