2019独角兽企业重金招聘Python工程师标准>>>

Software caused connection abort: recv failed 博客分类: 异常

Software caused connection abort: recv failed

java.net.SocketException: Software caused connection abort: recv failed

at java.net.SocketInputStream.socketRead0(Native Method)

at java.net.SocketInputStream.read(SocketInputStream.java:129)

产生这个异常的原因有多种方面,单就如 Software caused 所示,

是由于程序编写的问题,而不是网络的问题引起的.

已知会导致这种异常的一个场景如下: 
客户端和服务端建立tcp的短连接,每次客户端发送一次请求, 
服务端响应后关闭与客户端的连接. 
如果客户端在服务端关闭连接后,没有释放连接,继续试图发送请求和接收响应. 
这个时候就会出错.

这个时候客户端Socket的getOutputStream返回来的OutPutStream维护 
的是本地的连接状态, 
无法知道远程的服务端已经关闭了对应的InputStream和socket因此 
虽然调用了 
out.write(sendbuf, 0, sendbuf.length); 
方法,但是实际上服务端并没有接收到客户端的请求信息. 
因为没有抛出异常,因此造成了误以为客户端请求发送成功的假象.

接下来调用etInputStream的in.read(header, 0, 14);方法. 
因为这次要读取服务端的信息,因此产生了 
Software caused connection abort: recv failed的异常

总结产生原因,在服务端/客户端单方面关闭连接的情况下,另一方依然以为 
tcp连接仍然建立,试图读取对方的响应数据,导致出现 
Software caused connection abort: recv failed的异常.

因此在receive数据之前,要先判断连接状态. 
通过inputstream的available()方法来判断,是否有响应结果. 
如果available()的返回值为0,说明没有响应数据,可能是对方已经断开连接, 
如果available()的返回值大于0,说明有响应数据. 
另外值得注意的是available()返回的值是非堵塞的,可以被多个线程访问

在对方释放连接后,也要释放本地的连接.

转载于:https://my.oschina.net/xiaominmin/blog/1597858

Software caused connection abort: recv failed相关推荐

  1. Android studio ERROR: Software caused connection abort: recv failed 解决方法

    使用Android studio打开kotlin项目时报错:ERROR: Software caused connection abort: recv failed 解决方法:修改三个文件即可 1.修 ...

  2. 使用Spring JDBC时遇到的Software caused connection abort: recv failed问题

    在使用Spring jdbc连接数据库时遇到一个头疼的问题:程序启动以后,如果长时间不访问调用,当再次调用时会报错: 引用 org.springframework.dao.DataAccessReso ...

  3. [MySQL]Software caused connection abort: recv failed 问题分析与解决

    原文:http://blog.csdn.net/chuan122345/article/details/4894398 在项目开发时,遇到该异常,通过搜索在mysql官方网站上发现如下说明: I am ...

  4. 解决:java.net.SocketException: Software caused connection abort: recv failed

    前言:最近在学习 NIO 和netty 相关知识时,在bio的模式下,遇到了 java.net.SocketException: Software caused connection abort: r ...

  5. 关于socket write error 和Software caused connection abort: recv failed 错误

    Software caused connection abort: recv failed  错误 @Overridepublic void run() {// TODO Auto-generated ...

  6. 解决SSH连接出现 Software caused connection abort 的问题

    解决SSH连接出现 Software caused connection abort 的问题 参考文章: (1)解决SSH连接出现 Software caused connection abort 的 ...

  7. linux ssh 远程登陆 报错 software caused connection abort 解决方法

    使用远程登录工具putty或者SecureCRT连接到服务器时,长时间不操作造成网络中断,出现Software caused connection abort Software caused conn ...

  8. 异常:Software caused connection abort: socket write error

    异常:Software caused connection abort: socket write error 参考文章: (1)异常:Software caused connection abort ...

  9. github上传文件遇到错误:kex_exchange_identification: read: Software caused connection abort banner exchange:

    问题场景 github上传文件时,连接不上ssh,输入ssh -T git@github.com,检查连接,出现以下错误: kex_exchange_identification: read: Sof ...

最新文章

  1. 阿里九峰:云计算开启的基础设施新时代
  2. linux操作小技巧
  3. android user版本默认开启调试模式
  4. 【Jmeter篇】jmeter Ant Jenkins接口自动化测试集成之半路逆转(二)
  5. 11-4实战上色及修复照片
  6. python爬虫---代理、Cookie、模拟登录古诗文网
  7. Java线程:新特征-原子量
  8. python自动出题_使用Python编写数独游戏自动出题程序
  9. No certificate for team ‘‘ matching ‘iPhone Distribution: VOVA TECH LIMITED ()‘ Select a different s
  10. ubantu 安装jekins
  11. 星际争霸 2 快捷键
  12. iOS小技能:设备ID除了使用_idfa、_idfv 还可使用其他替代方案(使用Keychain 存储UUID)
  13. #93 高精度除低精度
  14. 常用API、static、数组复制、双色球练习与酒店管理系统
  15. 视觉理解论文系列(一)——ERNIE-VIL
  16. SecureCRT 乱码问题
  17. 基于RSSI测距的多边定位法(附代码与讲解视频)
  18. iPad如何越狱?4.2.1完美越狱教程 二 (cydia 安装)
  19. ElasticSearch教程与实战:从搭建服务到Spring Boot整合
  20. 同一页面无法显示多个模态框的解决办法

热门文章

  1. 【转】Powerdesigner逆向工程从sql server数据库生成pdm
  2. 堆和栈的区别 (转贴)
  3. SCOM警报通知新特性:即时消息通知
  4. Appium的DesiredCapabilities参数设置
  5. 正则表达式获取TABLE里的内容
  6. 微软牛津计划-语音转文本-文本转语音代码和实现
  7. linux修改ssh端口
  8. JavaScript学习笔记(八)--- 函数表达式
  9. centos和readhat下安装python2.7
  10. java设计模式之为别人做嫁衣----代理模式