我是靠谱客的博主 清脆故事,最近开发中收集的这篇文章主要介绍TCP/UDP 常见的错误码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在实际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 常见的错误码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(83)

评论列表共有 0 条评论

立即
投稿
返回
顶部