我一直在开发实时消息传递软件。在我的代码中的某个时刻,我创建了一个 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/