TCP/UDP 常见的错误码

本文详细介绍了在网络通信中常见的错误码ECONNABORTED、ECONNRESET及WOULDBLOCK的含义与应用场景,包括这些错误码在TCP与UDP协议下的表现形式,并探讨了不同操作系统下的处理差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在实际TCP&UDP C/S数据收发过程中,常见error code有ECONNABORTED(WSAECONNABORTED),ECONNRESET(WSAECONNRESET),nonblocking io当然还有WOULDBLOCK(WSAWOULDBLOCK)。

 

1. ECONNABORTED(WSAECONNABORTED)

    这个tcp send引起的,一般是protocol stack重传超时或者protocol处理错误等。

 

2. ECONNRESET(WSAECONNRESET)

    对于TCP

          远程主机已强制关闭,发送数据,远程主机protocol stack回应RST。

    对于UDP

          在Windows系统上,双方正在进udp数据交互,另一端关闭了,发送方会收到“ICMP Port Unreached",protocol向上报WSAECONNRESET。这时应用层一般不做关闭动作(除非有特殊的需求),因为这仅仅另外一端的 UDP socket不存在了,本端的udp socket还是完全合法的。

          有一点要注意的是,在Linux上,应用层不会得到ECONNRESET。

 

3. WOULDBOCK(WSAWOULDBLOCK)

     对于nonblocking io,这个很常见了。发送数据的时候,socket sending buffer没有空间了,得到这error code。简单做法是稍后重试,更好的做法是采用select/epoll之类的机制,注册一个WRITE EVENT,当sending buffer有空间了,kernel通知应用程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值