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

Java Socket网络编程,五个常见的异常发生的原因以及对应的解决方案在Java网络编程中,我们经常性的会碰到一些异常,有些异常是我们反复碰见的,下面整理几条常见的异常,供大家参考交流。

大家好,欢迎来到IT知识分享网。

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

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

1.java.net.SocketTimeoutException

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

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

2.java.net.BindException:Address already in use: JVM_Bind

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

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

3.java.net.ConnectException: Connection refused: connect

  • 出现原因:该异常发生在客户端进行new Socket(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被关闭(主动或者异常引起的关闭)后,另一方还在继续放松数据,发送的第一个数据包机会引发异常Connect reset by peer;②另一个是端退出,但退出时为关闭链接,另一端从连接中读取数据则抛出异常Connection reset.总结一下便是,因为由链接断开后的读和写操作引起的。

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

每天进步一点点,每天消化一点点。如果文章对你有帮助,点个赞呗。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/13139.html

(0)
上一篇 2024-03-08 10:26
下一篇 2024-03-08 10:45

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信