2

从ServerSocket#acceptIOException抛出它时表示什么? 我的意思是:如果我有一个循环接受连接,它将在这里被阻止:

Socket client = serverSocket.accept();

如果我在catch接受IOException期间,这是否意味着我应该关闭服务器套接字,即它很严重,或者我记录异常并返回接受连接,serverSocket.accept()就像什么都没发生一样?即服务器套接字功能齐全。

4

3 回答 3

2

You can get these from running out of file descriptors. Another possibility is SocketTimeoutException, if you have set a timeout and it expires. Another is that the server socket got closed asynchronously. Only the last of these is necessarily fatal.

于 2013-02-20T20:21:59.213 回答
1

我只见过一种情况,accept 抛出异常:打开的文件太多。根据您的应用程序,您可以等待并再次进入接受,关闭尝试关闭/绑定/接受的循环或失败。我们已经实施了这两种策略,但总是以失败告终。同样,如果您的客户寿命短暂,您可能会康复。我们的客户长寿...

于 2013-02-20T20:18:52.633 回答
-1

从 API 文档:

IOException 如果在等待连接时发生 I/O 错误。

这意味着如果在这里抛出异常,事情就会变糟。例如端口忙,网络适配器不可用等。所以,请稍等片刻,然后重新连接。如果再次发生这种情况,则无济于事。您无法连接到所选端口。

换端口?更换地址?关闭应用程序并显示错误消息?:(

于 2013-02-20T19:56:59.293 回答