当完全遇到SocketException时(或者当您对套接字使用BufferedReader时遇到IOException),是否应该将整个连接视为错误?
我或多或少想知道在读取或写入套接字时是否会发生任何“非致命”异常,虽然发生了异常,但该套接字仍然可用。
最佳答案
SocketException子类的javadoc的编译显示,您无法从此类异常中恢复并重用套接字。
表示尝试将套接字绑定(bind)到本地地址和端口时发生错误。通常,该端口正在使用中,或者无法分配所请求的本地地址。
表示尝试将套接字连接到远程地址和端口时发生错误。通常,远程拒绝连接(例如,没有进程在远程地址/端口上监听)。
表示尝试将套接字连接到远程地址和端口时发生错误。通常,由于存在中间防火墙或中间路由器已关闭,因此无法访问远程主机。
表示已在连接的数据报上收到“ICMP端口不可达”消息。
SocketException本身:抛出该异常表示基础协议(protocol)中存在错误,例如TCP错误。
因此,我要说是,没有办法继续,因为TCP已经试图确保从传输问题中恢复过来。
关于java - 所有的SocketExceptions都是 “fatal”吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10126642/