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

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


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

最佳答案

设置套接字超时,然后按如下所示进行设置

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


如果没有客户端继续前进,这将阻止接受10秒钟。

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

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

10-10 14:39