java.net.BindException:Address already in use: JVM_Bind
|
该异常发生在服务器端进行
new ServerSocket(port)
操作时,原因是本地端口已经被其他程序占用。此时用
netstat –an
命令,可以看到本地已在使用状态的端口, 使用一个没有被占用的端口就能解决这个问题
|
java.net.ConnectException: Connection refused: connect
|
该异常发生在客户端进行
new Socket(ip, port)
操作时,原因是无法找到目标 ip 地址的服务端(也就是从当前机器不存在到指定 ip 的路由),或者是该 ip 存在,但目标服务器上指定的端口没有程序监听
|
java.net.SocketException: Socket is closed
|
该异常在客户端和服务器均可能发生,原因是己方主动关闭了连接后(调用了
Socket#close()
方法)再对网络连接进行读写操作
|
java.net.SocketException: Connect reset by peer
|
另一个是,TCP 两端已经互发 FIN 报文正常关闭连接,但其中一端仍然使用该连接读写数据
|
java.net.SocketException: Connection reset
|
当前端的 Socket 收到对端的 RST 报文后仍然读数据
|
java.net.SocketException: Broken pipe
|
该异常在客户端和服务器均有可能发生,当前端在读写数据前断开连接(如当前端的程序准备写入数据到 Socket,结果发起IO调用后程序异常退出),则抛出该异常
|