我在接受服务器套接字上的客户端连接时发现了IOException。现在怎么办?

时间:2013-02-20 19:51:08

标签: java sockets io ioexception serversocket

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

Socket client = serverSocket.accept();

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

3 个答案:

答案 0 :(得分:2)

您可以通过耗尽文件描述符来获取这些内容。另一种可能是SocketTimeoutException,如果你设置了超时并且它到期了。另一个是服务器套接字异步关闭。只有最后一个必然是致命的。

答案 1 :(得分:1)

我只看到一个例子,其中accept接受异常:打开文件太多。根据您的应用程序,您可能会等待并再次接受,关闭尝试关闭/绑定/接受或失败的循环。我们已经实现了两种策略,并且始终以失败告终。同样,如果您的客户生活不足,您可能会康复。我们的客户长寿......

答案 2 :(得分:-1)

来自API doc:

  

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

这意味着如果抛出异常,那么事情就会变得糟糕。例如,端口忙,网络适配器不可用等等。所以,尝试稍等一下并重新连接。如果再次发生这种情况,无所事事。您无法连接到所选端口。

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