gpt4 book ai didi

java - 如何使用 java.net.ServerSocket 持续监听端口

转载 作者:行者123 更新时间:2023-11-29 08:29:37 29 4
gpt4 key购买 nike

我有一个 java.net.ServerSocket那是用来监听连接的。我正在使用它的 accept()方法,以便从客户端获取连接,然后适本地处理它们。我希望持续倾听客户的意见,永远不会让他们空着。目前我有类似这样的代码:

ServerSocket serverSocket = ...
while (shouldBeListening) {
handleClient(serverSocket.accept());
}

handleClient 方法可能需要少量时间(不到十分之一毫秒)。我担心 ServerSocket.accept() 之间的时间方法返回并再次调用它可能错过了连接请求。解决此问题的最佳方法是什么?

编辑:我实现它的方式目前在 handleClient 方法中创建了一个新线程,但即使这需要时间(特别是因为这是在 Raspberry Pi 上运行的),我担心如果连接是在执行 handleClient 方法时请求它可能会被拒绝,因为 accept()没有运行。

最佳答案

像这样。

 ServerSocket listener = new ServerSocket(8001);
try {
while (true) {
Socket socket = listener.accept();

然后您可以将套接字引用传递给您拥有的处理程序类。使该类实现 Runnable。每次将套接字引用传递给处理程序类时创建一个新线程以同时处理请求。请参阅以下链接以获取解决方案。如果你需要一个完整的代码。让我知道。

Runnable Sample by Jenkov

ThreadPool Sample - Stackoverflow

关于java - 如何使用 java.net.ServerSocket 持续监听端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49356184/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com