博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Socket常见错误
阅读量:5363 次
发布时间:2019-06-15

本文共 825 字,大约阅读时间需要 2 分钟。

一、简介

本文介绍 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 信号,该信号默认会使进程终止

测试:

 

三、错误码定义

 

 

参考:

转载于:https://www.cnblogs.com/274914765qq/p/5693361.html

你可能感兴趣的文章
ubuntu中文英文环境切换
查看>>
[sql]mysql启停脚本
查看>>
[elk]Mutate filter plugin增删改查字段
查看>>
mysql的查询、子查询及连接查询
查看>>
Java内功心法,行为型设计模式
查看>>
向github项目push代码后,Jenkins实现其自动构建
查看>>
C语言时间头文件
查看>>
Java8中的 lambda 和Stream API
查看>>
兼容性测试相关
查看>>
对称排序
查看>>
走进MySQL
查看>>
Remove Duplicates from Sorted Array
查看>>
Java 反射机制
查看>>
科技园区
查看>>
λ和列表解析
查看>>
LeetCode 3. Longest Substring Without Repeating
查看>>
通过Measure & Arrange实现UWP瀑布流布局
查看>>
如何在linux下安装jdk并运行java程序
查看>>
gkENGINE跨平台的问题总结
查看>>
什么是webpack
查看>>