`
sunnylocus
  • 浏览: 869655 次
  • 性别: Icon_minigender_1
  • 来自: 美国图森
社区版块
存档分类
最新评论

java.net.SocketException: Software caused connection abort: recv failed 异常分析

    博客分类:
  • Java
阅读更多

java.net.SocketException: Software caused connection abort: recv failed
 at java.net.SocketInputStream.socketRead0(Native Method)
 at java.net.SocketInputStream.read(SocketInputStream.java:129)
 at java.net.SocketInputStream.read(SocketInputStream.java:182)

 

发生这个异常,从异常提示看是由于程序引起的,而非网络方面的原因,引发该异常的

场景之一:

  客户机<-->服务器,之间是由一个socket 长连接来通信,客户端有一个接收线程在while(true){..}循环里不停地从InputStream流中读数据,客户机每隔几秒钟发一次心跳包至服务端,如果连续未收到心跳包响应的次数已达到规定的次数,客户机认为此链路异常,将socket关闭,那么服务器会抛出java.net.SocketException: Connection reset by peer异常,然后分配给此socket连接的线程退出,那么客户端在while(true){..}循环,读取流时便会发java.net.SocketException: Software caused connection abort: recv failed异常。



0
0
分享到:
评论
10 楼 stream1990 2013-08-22  
是的,我就是你现在说的这个场景,可是你没说如何解决哇?
求解决方法
stream@v1lady.com
9 楼 yangbo1992 2012-07-13  
sunnylocus 写道
yangbo1992 写道
请问,这是怎么回事啊?
[12-7-12 12:57:42:373 CST] 00000023 SystemOut     O ERROR [WebContainer : 4] 12-07-12 12:57:42 <oracle.xml.xsql.XSQLErrorHandler> -- XML-25017: Unexpected Error Occurred
java.lang.RuntimeException: java.lang.Exception: {网络故障。}
    at com.csair.util.ibe.xsql.actions.AVQueryAction.handleAction(AVQueryAction.java:80)
    at oracle.xml.xsql.actions.XSQLExtensionActionHandler.handleAction(XSQLExtensionActionHandler.java:78)
    at oracle.xml.xsql.XSQLDocHandler.getDocument(XSQLDocHandler.java:158)
    at oracle.xml.xsql.XSQLPageProcessor.process(XSQLPageProcessor.java:171)
    at oracle.xml.xsql.XSQLServlet.doGet(XSQLServlet.java:61)

查询航班信息的时候出现这个。求解。

这是全部的异常信息吗?


嗯,能加qq聊??343567562
8 楼 sunnylocus 2012-07-12  
yangbo1992 写道
请问,这是怎么回事啊?
[12-7-12 12:57:42:373 CST] 00000023 SystemOut     O ERROR [WebContainer : 4] 12-07-12 12:57:42 <oracle.xml.xsql.XSQLErrorHandler> -- XML-25017: Unexpected Error Occurred
java.lang.RuntimeException: java.lang.Exception: {网络故障。}
    at com.csair.util.ibe.xsql.actions.AVQueryAction.handleAction(AVQueryAction.java:80)
    at oracle.xml.xsql.actions.XSQLExtensionActionHandler.handleAction(XSQLExtensionActionHandler.java:78)
    at oracle.xml.xsql.XSQLDocHandler.getDocument(XSQLDocHandler.java:158)
    at oracle.xml.xsql.XSQLPageProcessor.process(XSQLPageProcessor.java:171)
    at oracle.xml.xsql.XSQLServlet.doGet(XSQLServlet.java:61)

查询航班信息的时候出现这个。求解。

这是全部的异常信息吗?
7 楼 yangbo1992 2012-07-12  
请问,这是怎么回事啊?
[12-7-12 12:57:42:373 CST] 00000023 SystemOut     O ERROR [WebContainer : 4] 12-07-12 12:57:42 <oracle.xml.xsql.XSQLErrorHandler> -- XML-25017: Unexpected Error Occurred
java.lang.RuntimeException: java.lang.Exception: {网络故障。}
    at com.csair.util.ibe.xsql.actions.AVQueryAction.handleAction(AVQueryAction.java:80)
    at oracle.xml.xsql.actions.XSQLExtensionActionHandler.handleAction(XSQLExtensionActionHandler.java:78)
    at oracle.xml.xsql.XSQLDocHandler.getDocument(XSQLDocHandler.java:158)
    at oracle.xml.xsql.XSQLPageProcessor.process(XSQLPageProcessor.java:171)
    at oracle.xml.xsql.XSQLServlet.doGet(XSQLServlet.java:61)

查询航班信息的时候出现这个。求解。
6 楼 javaAlpha 2010-03-03  
方法:原因在于 Java现在对 IPv6 的支持很不好


卸载IPv6就好了。
在本地连接的“属性”中卸载。
5 楼 geniouc 2010-02-22  
sunnylocus 写道
geniouc 写道
我在一个socket连接里一直往服务器发送短信,隔一段时间会抛Connect Reset的异常。是因为服务器断断开了么?
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.net.SocketInputStream.read(SocketInputStream.java:182)
at java.io.DataInputStream.readInt(DataInputStream.java:353)
发生异常后,我用socket.sendUrgentData方法,会报下面的异常:
java.net.SocketException: Connection reset by peer: send
at java.net.PlainSocketImpl.socketSendUrgentData(Native Method)
at java.net.PlainSocketImpl.sendUrgentData(PlainSocketImpl.java:541)
at java.net.Socket.sendUrgentData(Socket.java:923)

服务器收到短信后,有没有给客户机返回一个应答?看异常信息是服务器在接收客户机数据流时连接被重置了。服务器还没有全部接收完数据流时客户端关闭了输出流或着socket


客户端只是一直在发送和接受数据,会不会因为服务器承载能力有限,在繁忙时就断开了连接,或者抛出了连接超时的错误。。
4 楼 sunnylocus 2010-02-04  
yibosheng 写道
求解决办法。

用长连接方式,socket建立时该连接不断开,在网络空闲时由客户端发心跳包维持连接。
3 楼 yibosheng 2010-02-04  
求解决办法。
2 楼 sunnylocus 2010-02-02  
geniouc 写道
我在一个socket连接里一直往服务器发送短信,隔一段时间会抛Connect Reset的异常。是因为服务器断断开了么?
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.net.SocketInputStream.read(SocketInputStream.java:182)
at java.io.DataInputStream.readInt(DataInputStream.java:353)
发生异常后,我用socket.sendUrgentData方法,会报下面的异常:
java.net.SocketException: Connection reset by peer: send
at java.net.PlainSocketImpl.socketSendUrgentData(Native Method)
at java.net.PlainSocketImpl.sendUrgentData(PlainSocketImpl.java:541)
at java.net.Socket.sendUrgentData(Socket.java:923)

服务器收到短信后,有没有给客户机返回一个应答?看异常信息是服务器在接收客户机数据流时连接被重置了。服务器还没有全部接收完数据流时客户端关闭了输出流或着socket
1 楼 geniouc 2010-02-02  
我在一个socket连接里一直往服务器发送短信,隔一段时间会抛Connect Reset的异常。是因为服务器断断开了么?
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.net.SocketInputStream.read(SocketInputStream.java:182)
at java.io.DataInputStream.readInt(DataInputStream.java:353)
发生异常后,我用socket.sendUrgentData方法,会报下面的异常:
java.net.SocketException: Connection reset by peer: send
at java.net.PlainSocketImpl.socketSendUrgentData(Native Method)
at java.net.PlainSocketImpl.sendUrgentData(PlainSocketImpl.java:541)
at java.net.Socket.sendUrgentData(Socket.java:923)

相关推荐

Global site tag (gtag.js) - Google Analytics