java - 在有限的时间内运行一段代码

标签 java sockets network-programming serversocket

我一直在开发实时消息传递软件。在我的代码中的某个时刻,我创建了一个 ServerSocket 对象并等待客户端连接到它。

...
ServerSocket serverSocket=new ServerSocket(serverPort);
socket=serverSocket.accept();
...

但是,如果没有客户端在特定时间内(例如 10 秒)尝试连接到服务器,我的代码应该能够停止等待客户端并继续运行下一行。但是,代码会停留在 socket=serverSocket.accept(); 中,直到客户端尝试建立连接。我该如何避免这种情况?

最佳答案

在accept之前设置socket的超时时间,如下

serverSocket.setSoTimeout(10000); // 10 secs. time is in milisecs.
socket=serverSocket.accept();

如果没有客户端继续移动,这将阻止接受 10 秒。

但是,如果您打算保持服务器套接字打开,则创建一个新线程来接受客户端。

关于java - 在有限的时间内运行一段代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17570276/

相关文章:

javascript - 如何从不同的主机连接到 socket.io 服务器?

c - 找出 AF_UNIX + SOCK_SEQPACKET 最大消息大小

multithreading - Delphi EOutOfResources 屏幕截图

c# - 接收打印作业并将其转发到 LAN 中的打印机的软件

java - 本地运行的 hibernate 与服务器上运行的 hibernate 之间的同步

java - 同步线程安全对象列表中的多个读取和写入

java spring存储库按派生类过滤

具有火焰图输出的 java 分析器

java - Akka.io,在类 Actor 上找不到匹配的构造函数

go - 从终端关闭服务器的正确方法是什么?