社区
网络编程
帖子详情
UDP协议丢包
lidatou
2012-09-20 04:55:40
我看网上有人写(UDP只能保证你一件事,那就是包的完整性。你如果发一个256bytes的包,那么对方收到的肯定也是一个256bytes的包。他不会只收到半个包之类的。当然这其实也是UDP唯一能保证你的事情。其他事情都要靠你自己去订制。) 这个地方不是太理解他说的包。 这个包指的是我发送的数据还是UDP封装的包,比如我用SendTo函数发送了一个字符串,那么这个字符串是一个包呢,还是这个字符串会被分为几个包。
...全文
212
7
打赏
收藏
UDP协议丢包
我看网上有人写(UDP只能保证你一件事,那就是包的完整性。你如果发一个256bytes的包,那么对方收到的肯定也是一个256bytes的包。他不会只收到半个包之类的。当然这其实也是UDP唯一能保证你的事情。其他事情都要靠你自己去订制。) 这个地方不是太理解他说的包。 这个包指的是我发送的数据还是UDP封装的包,比如我用SendTo函数发送了一个字符串,那么这个字符串是一个包呢,还是这个字符串会被分为几个包。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lidatou
2012-09-21
打赏
举报
回复
谢谢各位,分平均分给你们!
kyotrue
2012-09-21
打赏
举报
回复
SendTo发送出去的数据,加上底层协议栈给你加的包头,就是一个包,UDP协议栈保证收上来的是一个完整的包,和发送出来的东西一样的,有问题的包给你过滤掉。
youngwolf
2012-09-21
打赏
举报
回复
你调用一次sendto,就是一个包,哪怕这个包只有一个字节,当包长超过最大长度时,我记得是发送失败的,此时你要自己分包,这是非常好理解的,假如你有一个文件要发送,你总不至于一个包发一个文件吧,肯定要自己分包。
你收到的包,都可以认为是正确的,完整的。tcp的话,收到的数据可以认为是正确的,但完整性保证不了。
lidatou
2012-09-21
打赏
举报
回复
[Quote=引用 2 楼 的回复:]
UDP只是"尽最大努力"把数据发给对方,是无连接的,不保证数据的可靠,顺序交付,也没有流量控制.应用程序每次调用sendto,在UDP协议都是一个数据包,如果数据的长度超过协议规定的最大值,在Windows上65507,sendto会失败.
你可以参考《WinSock网络编程经络》第4章,有详细的解释,这里有UDP程序源码,解压后找Daytime文件夹,下载地址:http://download……
[/Quote]
用sendto,在UDP协议都是一个数据包,如果数据的长度超过协议规定的最大值,在Windows上65507,这句话的意思是不是我如果发送65507大小的数据,对方要么都收到要么都收不到,不会收到一部分。
lidatou
2012-09-21
打赏
举报
回复
这个我知道,我就是搞不清楚哪个地方是我编程需要注意的。 UDP只能保证你一件事,那就是包的完整性,这句话所说的包是不是你说的(之后操作系统底层会为你组装成一个UDP数据包)UDP数据包。 如果是也就是说我发送一个长字符串可能会被分成2个包发,对方要么收到1或2个包,要么没收到,不会说收到一个包的一半吧?
Geoff08Zhang
2012-09-21
打赏
举报
回复
UDP只是"尽最大努力"把数据发给对方,是无连接的,不保证数据的可靠,顺序交付,也没有流量控制.应用程序每次调用sendto,在UDP协议都是一个数据包,如果数据的长度超过协议规定的最大值,在Windows上65507,sendto会失败.
你可以参考《WinSock网络编程经络》第4章,有详细的解释,这里有UDP程序源码,解压后找Daytime文件夹,下载地址:http://download.csdn.net/detail/geoff08zhang/4571358
Gloveing
2012-09-20
打赏
举报
回复
你得去理解TCP/UDP,理解数据时怎么发送出去的
你使用UDP,调用SendTo函数发送了一个字符串,
---》之后操作系统底层会为你组装成一个UDP数据包
---》之后再组装成IP数据包
---》组装成MAC数据帧 -》发送出去
接收端又“一层层”的把mac帧头,IP包头“剥掉”,最终还原出真正数据
TCP&
UDP
;测试工具
例如,当用户报告网络问题时,管理员可以使用TCP&
UDP
测试工具来定位问题,如检查网络连接是否畅通,确定是否存在
丢包
现象,或者分析TCP的拥塞窗口大小是否正常。 在实际使用中,"TCP&
UDP
测试工具"可能包含一个图形...
一文教你轻松排查解决,
UDP
协议
丢包
问题
小张是一名资深的网络工程师,在为公司搭建物联网数据传输系统时,选用了
UDP
协议
以保证数据传输的时效性。但上线不久,系统就频繁出现数据丢失...今天,就让我们跟随小张的脚步,一起学习如何排查解决
UDP
丢包
问题。
UDP
主要
丢包
原因
1、接收端处理时间过长导致
丢包
:接收端调用recv方法收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次...3、
UDP
发送的包较大,超过接受者缓存导致
丢包
:几个大的
udp
包可能会超过接收者的缓冲,导
UDP
解决
丢包
问题总结
收包率低/
丢包
率高的原因分析 1 缓存太小,不能及时接收数据。 连续多个
UDP
包超过了
UDP
接收缓冲区大小 ,比如: 如:
UDP
包过大 如:
UDP
发包速率过快,突发大数据流量超过了缓冲区上限 2 recvfrom()接收到数据之后...
UDP
主要
丢包
原因及具体问题分析
一、主要
丢包
原因 1、接收端处理时间过长导致
丢包
:调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失。对于这种情况可以修改接收端,将...
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章