IOException
表示从ServerSocket#accept抛出的时间是什么?
我的意思是:如果我有一个循环接受连接,它将被阻止在这里:
Socket client = serverSocket.accept();
如果我在接受期间catch
和IOException
这意味着我应该关闭服务器套接字,即它是严重的或我是记录异常并返回接受serverSocket.accept()
中的连接,就像什么也没发生一样?I.e。服务器套接字功能齐全。
答案 0 :(得分:2)
您可以通过耗尽文件描述符来获取这些内容。另一种可能是SocketTimeoutException,如果你设置了超时并且它到期了。另一个是服务器套接字异步关闭。只有最后一个必然是致命的。
答案 1 :(得分:1)
我只看到一个例子,其中accept接受异常:打开文件太多。根据您的应用程序,您可能会等待并再次接受,关闭尝试关闭/绑定/接受或失败的循环。我们已经实现了两种策略,并且始终以失败告终。同样,如果您的客户生活不足,您可能会康复。我们的客户长寿......
答案 2 :(得分:-1)
来自API doc:
IOException如果在等待连接时发生I / O错误。
这意味着如果抛出异常,那么事情就会变得糟糕。例如,端口忙,网络适配器不可用等等。所以,尝试稍等一下并重新连接。如果再次发生这种情况,无所事事。您无法连接到所选端口。
更改端口?更换地址?关闭应用程序并显示错:(