我一直在为实时消息开发软件。在我的代码中的某个时刻,我创建一个ServerSocket对象并等待客户端连接到它。
...
ServerSocket serverSocket=new ServerSocket(serverPort);
socket=serverSocket.accept();
...
然而,如果没有客户端尝试在特定的时间内连接到服务器,比如10秒,我的代码应该能够停止等待客户端并继续运行下一行。但是,代码卡在socket=serverSocket.accept();
中,直到客户端尝试建立连接。我怎么能避免这样?
答案 0 :(得分:4)
在接受之前设置套接字的超时,如下所示
serverSocket.setSoTimeout(10000); // 10 secs. time is in milisecs.
socket=serverSocket.accept();
如果没有移动的客户端,这将阻止接受10秒。
但是如果您打算继续打开服务器套接字,那么创建一个新线程来接受客户端。