前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UDP 协议 C# UdpClient乱序接收数据包丢失的问题 Socket ReceiveBufferSize

UDP 协议 C# UdpClient乱序接收数据包丢失的问题 Socket ReceiveBufferSize

作者头像
zls365
发布2020-08-19 10:57:33
1.8K0
发布2020-08-19 10:57:33
举报
文章被收录于专栏:CSharp编程大全

一、UDP 协议 C# UdpClient乱序接收数据包丢失的问题 Socket ReceiveBufferSize

利用UdpClient收发文件,走Udp协议,发送端只管发送数据包,接收端负责接收数据,测试中发现,按每块1298字节发送数据包时,接收端在接收共8块时出现了部分数据包的丢失,分析可能是数据突然集中到达超出Socket接收缓冲区大小,造成数据覆盖丢失,因为默认Socket缓冲区大小为8192字节,每块数据1298字节再加上我在实验程序中自定义的数据包头信息,每块数据大小在1472字节,8块共计11776字节,远超出了8192,会造成数据丢失。接收端在乱序接收文件过程中,对突然集中到达的数据包处理不及时,造成缓冲区大小不够存储这些数据包,发生数据包的丢失,因而【如果要传送大文件,或在使用高带宽或高滞后时间连接(如卫星宽带提供程序),请考虑增加缓冲区的大小】。针对UdpClient,我们需要用到Socket 的ReceiveBufferSize 属性,添加如下代码:

UdpClient uc = new UdpClient(7376);//创建一个UdpClient实例,监听绑定了端口7376的接口

uc.Client.ReceiveBufferSize = 1024 * 1024;//这里大小(以字节为单位)根据需要修改,默认值是8192

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CSharp编程大全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档