当IOException
从ServerSocket#抛出时,它表示什么
我的意思是:如果我有一个接受连接的循环,它将在这里被阻止:
Socket client = serverSocket.accept();
如果我在接受过程中catch
和IOException
,这是否意味着我应该关闭服务器套接字,即情况严重,或者我记录异常,然后像什么都没发生一样返回接受serverSocket.accept()
中的连接?即服务器插座功能齐全。
您可以从用完文件描述符中获得这些。另一种可能性是SocketTimeoutException,如果您设置了一个超时并且它过期了。另一个原因是服务器套接字异步关闭。只有最后一种必然是致命的。
我只见过accept抛出异常的一种情况:打开的文件太多。根据你的应用程序,你可以等待并再次进入接受,关闭-尝试关闭/绑定/接受循环或失败。我们已经实施了这两种策略,而且总是以失败告终。同样,如果你的客户生活拮据,你可能会康复。我们的客户长寿。。。
来自API文档:
IOException,如果在等待连接时发生I/O错误。
这意味着,如果在这里抛出异常,就会出现问题。例如,端口正忙,网络适配器不可用等。因此,请尝试等待一段时间,然后重新连接。如果这种情况再次发生,无需采取任何措施。您无法连接到所选端口。
更改端口?更改地址?关闭应用程序并显示错误消息?:(