java - 所有 SocketException 都是 "fatal"吗?

标签 java sockets

当遇到 SocketException(或者当您使用 BufferedReader 作为套接字时遇到 IOException)时,整个连接是否应该被视为错误?

我或多或少想知道在读取或写入套接字时是否会发生任何“非致命”异常,即发生但套接字仍然可用的异常。

最佳答案

SocketException子类的javadoc汇编表明您无法从此类异常中恢复并重用套接字。

  • BindException 表示尝试将套接字绑定(bind)到本地地址和端口时发生错误。通常,端口正在使用中,或者无法分配请求的本地地址。

  • ConnectException 表示尝试将套接字连接到远程地址和端口时发生错误。通常,连接被远程拒绝(例如,没有进程正在监听远程地址/端口)。

  • NoRouteToHostException 表示尝试将套接字连接到远程地址和端口时发生错误。通常,由于防火墙介入或中间路由器关闭,无法访问远程主机。

  • PortUnreachableException 表示已在连接的数据报上收到 ICMP 端口不可达消息。

SocketException本身:抛出该异常表示底层协议(protocol)出现错误,例如TCP错误。

因此我会说是的,没有办法继续,因为 TCP 已经尝试确保从传输问题中恢复。

关于java - 所有 SocketException 都是 "fatal"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10126642/

相关文章:

java - 通过创建可以接受枚举的方法使代码更简洁

java - 将 jtable 中的编辑和删除信息添加到数据库

java - Play框架中的中间件(Java)

无法为 enp4s0 上的套接字设置 SO_BINDTODEVICE

c - 访问 TCP header 字段(没有原始套接字 API)

python - 使用 boost-asio 的 C++ 和 Python 程序之间的客户端服务器

c - ECONNRESET 在发送 Linux C

java - 当 ActiveMQ 启动时警告为 java.io.EOFException

JavaFX 标签 double

java - 套接字编程在服务器之间传输数据