欢迎您来到中软卓越!中软国际教育-权威官方IT教育机构 加入收藏
  • 教育部授予:“软件工程专业大学生实习实训基地”资质
  • 商务部授予:“中国服务外包示范培训中心”资质
  • 工信部授予:“国家信息技术紧缺人才培养工程521计划”资格
2016年产学合作
协同育人项目
优秀合作伙伴奖

400-1616-861

 > IT技术知识点

Java Socket网络编程, 五个常见的异常发生的原因以及对应的解决方案

时间:2017-07-18 16:29:41 作者: 点击次数:1

 三伏天已经到了,你的《盛夏》是什么样子?

空调WiFi西瓜,葛优同款沙发

夕阳西下,我打开电脑学 java ……

 

 

在Java网络编程中,我们经常性的会碰到一些异常,有些异常是我们反复碰见的,下面整理几条常见的异常,供大家参考交流。


 

1.java.net.

SocketTimeoutException

 

     出现原因:这个异常表示很常见,原因就是Socket超时。

 

解决方案:一般会有2个地方会抛出这个异常,一个是在Connect的时候,由connect(SocketAddressendpoint,inttimeout)中的后者来决定;另外一个就是setSoTimeout(inttimeout),这个是设定读取的超时时间,它们设置成0均表示无限大。

2.java.net.

BindException:Address already in use: JVM_Bind

 

  出现原因:该异常发生在服务端进行NewServerSocket(Port)或者Socket.bind(bingPort)操作的时候,原因就是与Port一样的一个端口已经被启动,并进行监听。

 

解决方案:此时呢,我们可以用netstat-an的命令,可以监听到一个Listending状态的端口。只需要找一个没有被占用的端口就能解决问题。或者,我们在使用端口前,优先去查看哪些端口不能使用。(注:Port值为0-65536的整型值)

 

3.java.net.

ConnectException: Connection refused: connect

 

出现原因:该异常发生在客户端进行newSocket(Ip,Port)或者socket.connect(address,timeout)操作时,原因就是指定的ip地址不能被找到,或者说ip地址存在,但是找不到对应的端口进行监听。

 

解决方案:首先检查客户端的ip和port是否写错了,假如正确可以测试客户端和服务器端时候可以ping通,如果可以ping通,则在服务端重新找一个可以用的端口;如果ping不通,则需要另外想办法了。

 

4.java.net.

SocketException: Socket is closed

 

出现原因:该异常在客户端和服务器端均可能发生,原因就是,客户端或者服务器端主动关闭了链接,Spcket的close方法,随后再次对网络链接进行一系列操作。

 

解决方案:首先我们要弄清楚主动关闭链接的原因,杜绝以后再次被关闭的可能性;然后我们重启客户端和Server端,重新建立通讯即可。

 

5.java.net.

SocketException:Connection reset或者

Connect reset by peer:Socket write error

 

出现原因:该异常在客户端和服务器端均可能发生,引发该异常有两个原因:①如果一端的Socket被关闭(主动或者异常引起的关闭)后,另一方还在继续放松数据,发送的第一个数据包机会引发异常Connectresetbypeer;②另一个是端退出,但退出时为关闭链接,另一端从连接中读取数据则抛出异常Connectionreset.总结一下便是,因为由链接断开后的读和写操作引起的。

 

解决方案:解决方案如4中的类似,一定要弄清楚一端关闭原因,不要只是简单的重启就解决眼前问题。

 

1.jpg

每天进步一点点,每天消化一点点。希望这篇文章对你有帮助,欢迎订阅。