socket 编程频繁使用 send 函数为什么会出现丢包的现象

 我来答
zyxzyx16688
高粉答主

2017-09-17 · 繁杂信息太多,你要学会辨别
知道大有可为答主
回答量:3.4万
采纳率:65%
帮助的人:1941万
展开全部
send这个函数有一个特性,就是函数调用的时候并不是真正发送数据的时候。send的作用其实是将指定的数据先复制到系统的一个缓冲区中,然后等待系统发出。所以,send的返回值就是实际复制到缓冲区中数据的长度。如果频繁的调用,可能往缓冲区中写入的数据很多,最后可能已经写不进去了。比如,IBM z/TPF的缓存大小是1M [4],其他系统没查到。所以你要检查一下send函数的返回值,看看是不是跟你传进去的length的长度一致。如果不一致,那就是没有拷贝进入发送的缓冲区,所以没有发出去。
另外,不知道你是怎么检测到的丢包现象。如果你不是用的Wireshark之类的嗅探器进行数据包的截获和查看,那么还有一个可能,就是数据实际上已经发出去了,但是因为数据量比较大,一次没有办法收回来,所以你以为是丢包了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式