问题分析:
当服务端创建SocketServer时、客户端向服务端创建socket时、连接过程中发生错误时会抛出此类异常。此类异常主要有四种子类BindException、 ConnectException、NoRouteToHostException、PortUnreachableException,均可以被SocketException捕获。这四种子类的问题分析如下:
BindException试图将套接字绑定到本地地址和端口时发生错误的情况下,抛出此异常。
ConnectException试图将套接字连接到远程地址和端口时发生错误的情况下,抛出此异常,典型的方式是因为远程主机拒绝,例如远程主机不存在或并未监听此端口。
NoRouteToHostException试图将套接字连接到远程地址和端口时发生错误的情况下,抛出此异常,一般原因是因为防火墙拦截或必经路由器中断引起的。
PortUnreachableException在连接的数据报上已接收到 ICMP Port Unreachable 消息时,抛出该异常。
解决方案:当服务端创建SocketServer时、客户端向服务端创建socket时、连接过程中发生错误时会抛出此类异常,建议使用try catch finally块捕获异常并做好业务处理。
示例一
java.net.SocketException:Connectionreset
at java.net.SocketInputStream.read(SocketInputStream.java:196)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder