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

时间:2013-07-10 12:07:53

标签: java sockets network-programming serversocket

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

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

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

1 个答案:

答案 0 :(得分:4)

在接受之前设置套接字的超时,如下所示

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

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

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