udpclient传输包通过网络是否有大小限制

andy__zhu 2010-02-28 08:49:05
我做的传输是客户端发一个包过去,然后等服务端有个确认再发下一个的。这样包太小的话,发送速度就慢了。但是包的大小如果超过1500的话,在局域网没什么问题,通过网络传输,则客户端发送出去后,服务端就再也收不到了,而且都不会报错。请问是否是udpclient传输包的大小通过网络有限制?如果有,应该采用什么样的方案解决速度的问题呢?如果没有那又是需要哪个属性控制?
...全文
227 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
andy__zhu 2010-03-02
  • 打赏
  • 举报
回复
顶upupupupupup
cnzdgs 2010-03-01
  • 打赏
  • 举报
回复
UDP的限制是包的长度(包含首部)必须小于64KB。
以太网的MTU是1500字节,超过这个长度时,IP需要分片发送,在接收端重组,对于复杂的网络(例如Internet),IP分片会增加丢包的几率,所以要尽量避免分片,UDP包最多1KB多一点,不要再大了。
如果要高效传输,不要每发一个包都等待对方回应,可以连续发包,接收方每隔一段时间回应一次,告知自己的接收情况,发送方根据对方的回应确定哪些包丢失了,再重新发送。
andy__zhu 2010-03-01
  • 打赏
  • 举报
回复
第一次做udp传输,不知道有什么好的解决方案,希望高手不吝赐教。有源代码更好,谢谢
jimh 2010-03-01
  • 打赏
  • 举报
回复
1500是windows默认的,internet好像是1492,反正udp不要超过这个限度,否则丢包就很频繁了
andy__zhu 2010-03-01
  • 打赏
  • 举报
回复
不是我要udp,是客户要udp,传送的是图片文件,速度要,可靠性也不能太低
xingyuebuyu 2010-02-28
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
使用udp时是根本不要可靠性的,只要速度。如果你要可靠性还要速度,那么就使用tcp吧。


同意
  • 打赏
  • 举报
回复
使用udp时是根本不要可靠性的,只要速度。如果你要可靠性还要速度,那么就使用tcp吧。
  • 打赏
  • 举报
回复
不是什么包大小限制问题。udp本来就是极其不可靠的,如果因为任何原因而无法发到服务器,客户端不会得到任何信息,因为一旦把数据扔到底层就不管了(甚至根本没有发送到网络上也不管)。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧