Socket常见错误
2016-07-21 22:17
246 查看
一、简介
本文介绍 Socket 连接常见错误。
二、常见错误
1)ECONNABORTED
描述:“software caused connection abort”,即“软件引起的连接中止”
原因:当服务和客户进程在完成用于 TCP 连接的“三次握手”后,客户 TCP 发送了一个 RST (复位)
2)ECONNRESET
描述:“connection reset by peer”,即“对方复位连接”
原因:发生在服务进程较客户进程提前终止。当服务进程终止时会向客户 TCP 发送 FIN 分节,客户 TCP 回应 ACK,服务 TCP 将转入 FIN_WAIT2 状态。此时如果客户进程没有处理该 FIN (如阻塞在其它调用上而没有关闭 Socket 时),则客户 TCP 将处于 CLOSE_WAIT 状态。当客户进程再次向 FIN_WAIT2 状态的服务 TCP 发送数据时,则服务 TCP 将立刻响应 RST
测试:发送一个到未监听端口的连接请求
3)ETIMEDOUT
描述:“connect time out”,即“连接超时”
原因:发生在服务器主机崩溃。此时客户 TCP 将在一定时间内(依具体实现)持续重发数据分节,试图从服务 TCP 获得一个 ACK 分节。当最终放弃尝试后(此时服务器未重新启动),内核将会向客户进程返回 ETIMEDOUT 错误
测试:
4)EPIPE
描述:“broken pipe”,即“管道破裂”
原因:发生在客户进程不理会(或未及时处理)Socket 错误,继续向服务 TCP 写入更多数据时,内核将向客户进程发送 SIGPIPE 信号,该信号默认会使进程终止
测试:
三、错误码定义
本文介绍 Socket 连接常见错误。
二、常见错误
1)ECONNABORTED
描述:“software caused connection abort”,即“软件引起的连接中止”
原因:当服务和客户进程在完成用于 TCP 连接的“三次握手”后,客户 TCP 发送了一个 RST (复位)
2)ECONNRESET
描述:“connection reset by peer”,即“对方复位连接”
原因:发生在服务进程较客户进程提前终止。当服务进程终止时会向客户 TCP 发送 FIN 分节,客户 TCP 回应 ACK,服务 TCP 将转入 FIN_WAIT2 状态。此时如果客户进程没有处理该 FIN (如阻塞在其它调用上而没有关闭 Socket 时),则客户 TCP 将处于 CLOSE_WAIT 状态。当客户进程再次向 FIN_WAIT2 状态的服务 TCP 发送数据时,则服务 TCP 将立刻响应 RST
测试:发送一个到未监听端口的连接请求
telnet www.sina.com 20000
3)ETIMEDOUT
描述:“connect time out”,即“连接超时”
原因:发生在服务器主机崩溃。此时客户 TCP 将在一定时间内(依具体实现)持续重发数据分节,试图从服务 TCP 获得一个 ACK 分节。当最终放弃尝试后(此时服务器未重新启动),内核将会向客户进程返回 ETIMEDOUT 错误
测试:
telnet www.baidu.com
4)EPIPE
描述:“broken pipe”,即“管道破裂”
原因:发生在客户进程不理会(或未及时处理)Socket 错误,继续向服务 TCP 写入更多数据时,内核将向客户进程发送 SIGPIPE 信号,该信号默认会使进程终止
测试:
三、错误码定义
http://epydoc.sourceforge.net/stdlib/errno-module.html
参考:http://lzy.iteye.com/blog/383884
相关文章推荐
- UVA 11401-Triangle Counting
- TOJ 2996.Shot(数学+物理计算)
- LeetCode: Implement strStr()(字符串匹配:Sunday算法)
- ThoughtWorks咨询师们的博客
- $(" ").value的意思
- CodeForces 689E Mike and Geometry Problem (离散化+组合数)
- C#图片处理示例(裁剪,缩放,清晰度,水印)
- html5调用摄像头实现拍照(未测试)
- Some Powerful Python Tools to Analyze Data
- Java实现GroupBy/分组TopN功能
- 【Redis系列】Redis主从复制
- css文本格式详解
- JSON与JAVA数据的相互转换
- 判断是否获取了悬浮窗权限
- 测试分析之从用户价值角度设计测试点
- LeetCode - 143. Reorder List
- PowerDesigner之PDM(物理数据模型)
- LightOJ 1214
- git 冲突合并
- Android闹钟最终版【android源码闹钟解析】