讨论关于 UDP 大文件传输

zhzared05 2010-07-22 10:32:05
最近在做PDA关于udp 文件传输的功能,在传输的过程中,发现一个文件总是只能接收到32kb的数据,也就是说其它数据都丢了
我的数据有做封包处理
其中包数据包括包头,包尾, 包头主要有一些协议,然后就是当前文件总大小,总包数,当前包,当前包大小,然后后面就跟着文件数据。
那么我如何解决这种丢包的问题呢,最好是讨论关于udp 解决方案。
...全文
234 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
afjafjafj2008 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhzared05 的回复:]

我发送的时候一个包封的400 byte ,接收的时候还要分次接收么,每个包过来都有总包数,当前第几个包这些数据,我只要解析处理就可以了
[/Quote]

32MB是一个固定值,block号从0开始到65535结束,当超过65535后会block号会又从0开始但接收方会认为一个新的传输导致发送方收不多ACK信息从而超时,后面的包全部丢失。
zhzared05 2010-07-22
  • 打赏
  • 举报
回复
测试环境
client : wm 6.0 ,信号满的
server : 四核PC

网络通道: GPRS
qldsrx 2010-07-22
  • 打赏
  • 举报
回复
你先局域网测试下,选择网络条件好的环境,另外只能接收到32kb是不是固定值,是的话就要检测程序本身了,不然丢包这种不定因素,不会每次都一样的。
zhzared05 2010-07-22
  • 打赏
  • 举报
回复
我发送的时候一个包封的400 byte ,接收的时候还要分次接收么,每个包过来都有总包数,当前第几个包这些数据,我只要解析处理就可以了
zhzared05 2010-07-22
  • 打赏
  • 举报
回复
这些数据同步数据确认的问题都处理好了,我觉得这个不是问题,现在的问题 udp 丢包以后,怎么去高效地处理,或者是怎么做可能不让他丢包。
RedFish2010 2010-07-22
  • 打赏
  • 举报
回复
分次接收
qldsrx 2010-07-22
  • 打赏
  • 举报
回复
UDP传输你得自己解决数据同步问题,这比封包更重要,也就是一个数据包发送后,对方必须给出收到数据包的确认信号后,服务端才可以继续发送,如果未收到确认信号就再发送,就会在接收方堆积过多,导致来不及接收,丢包就来了。这比起TCP的3次握手少了一次,还不用保持连接,算是效率高一些吧。

110,536

社区成员

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

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

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