我在服务器套接字上接受客户端连接时遇到IOException.现在怎么办



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

Socket client = serverSocket.accept();

如果我在接受过程中catchIOException,这是否意味着我应该关闭服务器套接字,即情况严重,或者我记录异常,然后像什么都没发生一样返回接受serverSocket.accept()中的连接?即服务器插座功能齐全。

您可以从用完文件描述符中获得这些。另一种可能性是SocketTimeoutException,如果您设置了一个超时并且它过期了。另一个原因是服务器套接字异步关闭。只有最后一种必然是致命的。

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

来自API文档:

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

这意味着,如果在这里抛出异常,就会出现问题。例如,端口正忙,网络适配器不可用等。因此,请尝试等待一段时间,然后重新连接。如果这种情况再次发生,无需采取任何措施。您无法连接到所选端口。

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

最新更新