概述
在实际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通知应用程序。
最后
以上就是清脆故事为你收集整理的TCP/UDP 常见的错误码的全部内容,希望文章能够帮你解决TCP/UDP 常见的错误码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复