从ServerSocket#acceptIOException
抛出它时表示什么?
我的意思是:如果我有一个循环接受连接,它将在这里被阻止:
Socket client = serverSocket.accept();
如果我在catch
接受IOException
期间,这是否意味着我应该关闭服务器套接字,即它很严重,或者我记录异常并返回接受连接,serverSocket.accept()
就像什么都没发生一样?即服务器套接字功能齐全。
从ServerSocket#acceptIOException
抛出它时表示什么?
我的意思是:如果我有一个循环接受连接,它将在这里被阻止:
Socket client = serverSocket.accept();
如果我在catch
接受IOException
期间,这是否意味着我应该关闭服务器套接字,即它很严重,或者我记录异常并返回接受连接,serverSocket.accept()
就像什么都没发生一样?即服务器套接字功能齐全。
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.
我只见过一种情况,accept 抛出异常:打开的文件太多。根据您的应用程序,您可以等待并再次进入接受,关闭尝试关闭/绑定/接受的循环或失败。我们已经实施了这两种策略,但总是以失败告终。同样,如果您的客户寿命短暂,您可能会康复。我们的客户长寿...
从 API 文档:
IOException 如果在等待连接时发生 I/O 错误。
这意味着如果在这里抛出异常,事情就会变糟。例如端口忙,网络适配器不可用等。所以,请稍等片刻,然后重新连接。如果再次发生这种情况,则无济于事。您无法连接到所选端口。
换端口?更换地址?关闭应用程序并显示错误消息?:(