0

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

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

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

4

1 回答 1

4

在接受之前设置套接字的超时时间如下

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

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

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

于 2013-07-10T12:13:35.590 回答