怎样实现UDP发送不丢失数据帧?、(50分)

  • 主题发起人 主题发起人 月猫
  • 开始时间 开始时间

月猫

Unregistered / Unconfirmed
GUEST, unregistred user!
我想用UDP通讯实现MP3文件的 读取并发送到服务器,怎么才做到不丢失数据帧??
 
upd协议本身就决定了不可能保证,网络速度好可能一点不丢。你只有自己做数据校验。
 
改成TCP吧
 
问题: 熟悉UDP文件传输的高手请进 ( 积分: 100 )
分类: Internet/TCPIP

来自: shotgun007, 时间: 2003-06-27 3:06:00, ID: 1984253
小弟有个项目需要用UDP进行远程文件传输,为了提高传输效率并保证文件数据的正确性,准备采用滑窗算法,但是要自己从零开始实现滑窗算法实在是太费时间,有没有哪位大虾有现成的算法,或者有比我的方案更好的建议?
我的邮件:dzh@inleo.com

来自: Minko, 时间: 2003-06-27 9:06:00, ID: 1984424
请问你的设计是不是有问题。
UDP是实现一些需要快速连接(断开连接)不理传输准确性的网络连接。也就是说UDP信息发出后是不理有没有到客户端的。按照介绍只要数据到客户端了就是正确的。
TCP本身就可以保证数据传输的准确性。

来自: chenxz, 时间: 2003-06-27 9:21:00, ID: 1984490
用udp传输文件是死路一条,除非对文件内容不关系,因为udp是会丢包的。tcp才能保证传输内容不丢失。

来自: shotgun007, 时间: 2003-06-27 11:56:00, ID: 1985111
我看可能需要先说明一下什么是滑窗算法:滑窗(Sliding Window)是利用缓冲技术和纠错技术对UDP文件传输进行流量控制和差错控制的高级算法,现在OICQ的最新版本已经采用这种算法来传输文件。UDP可以轻易穿过客户端的网关,甚至各种代理协议,相对于TCP有许多优势。希望大家多加研究。

来自: 航宇, 时间: 2004-08-03 15:08:14, ID: 2746361
楼主找到了好的解决方法了吗?

来自: 乡村月光, 时间: 2004-08-04 4:30:22, ID: 2747209
我是这样做的:对每个数据包编号,数据包里包含编号信息,发送端一次发完所有数据,同时接收对方的反馈消息,反馈消息里包含没接收到的数据包编号,发送端再把丢失的数据重发一次,如此反复直到接收端收到所有数据。在接收端接收到数据包后检查编号顺序,把没接收到的编号保存,并发给发送端,通知发送端重发该数据包。

来自: element, 时间: 2004-08-04 15:51:59, ID: 2748294
如果你非要用UDP进行远程文件传输,推荐你使用INDY中IdTrivialFTPServer。不过从稳定使用还是使用FTPSERVER构件开发。

问题讨论没有结束 ...
 
实话实说,这个是不可能实现的,改协议吧。
 
加个ID,服务器接收到一个包返回OK,客户端再发下一个包, 没返回 重发
 
模仿tcp自己实现握手
 
我原来用udp时就发现这个问题,研究了好长时间,也没有办法解决,这是本身的设计问题,所以,要想不丢失数据帧,用TCP好点。要么象maze所说的一样:模仿tcp自己实现握,
其它,好象没有更好的办法
 
udp没有握手 ,也没有数据验证的吧,换tcp
要不就用他们说的模拟TCP,不过这样的话还不如用TCP
 
多人接受答案了。
 
后退
顶部