socket链接中几种常见的错误

做一个简单的总结,请大家多多补充

1. ETIMEOUT: connection timeout

socket通信中,如果server端没有发送ACK SYN分片响应client端的SYN分片,connect函数则会返回timeout错误

2. ECONNREFUSED: connection refused

当client端收到server端的RST报文,connect函数则会返回connection refused错误

返回RST报文的三种情况:目的地为某端口的SYN到达,然而该端口上没有正在监听的服务器;TCP想取消一个已有的链接;TCP接收到一个根本不存在的链接上的分片。

3. ECONNRESET: connection reset by peer

当client已经收到一个RST报文,但继续调用read函数进行读操作,则会返回该错误

4. EPIPE: pipe broken

当一个进程向某一个已经收到RST报文的套接字再执行写操作,那么内核会向进程发出一个SIGPIPE信号,该信号的默认行为是终止进程,因此进程应当捕获以免不情愿的被终止。

不论该进程是捕获了该信号并从其信号处理函数返回,还是简单的忽略该信号,写操作都将返回EPIPE错误。

5. network unreachable

当客户client发出的SYN分片在中间的某个路由器上引发目的不可达的ICMP错误,在三次SYN重试均失败后,内核把保存的目的地址不可达消息作为NETUNREACH错误返回给进程

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值