关于可靠UDP传输

Bosee 2004-12-13 11:44:52
UDP不能保证发出数据的完整性和顺序。但若只能选择UDP,能实现像TCP的可靠通信吗?
举个例子,若需要写一个P2P聊天程序,怎么能知道对方已接收到数据?我想用握手通信的办法,就是发送数据后需要等待对方回应,但万一回应数据包在传输中丢失,怎么办呢?
望大家能指教,谢谢!
...全文
609 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaomaoy 2004-12-22
  • 打赏
  • 举报
回复
用UDP实现可靠文件传输
http://www.donews.net/Tell/archive/2004/12/14/202601.aspx
xysome 2004-12-21
  • 打赏
  • 举报
回复
可以参考tftp协议,它就是建立在udp基础上,而且非常简单
sharkhuang 2004-12-20
  • 打赏
  • 举报
回复
自己实现应答机制
bbcharm 2004-12-20
  • 打赏
  • 举报
回复
rtp rtcp 就是UDP可靠传输的典型例子
夭夭 2004-12-19
  • 打赏
  • 举报
回复
SIP只是一个其它协议用的统一握手协议,具体内容还是其它协议来实现的.
iThinker 2004-12-16
  • 打赏
  • 举报
回复
应该尽量用这些针对应用制定的国际标准协议,只有在没有标准协议可以用的情况下可考虑自己设计。
iThinker 2004-12-16
  • 打赏
  • 举报
回复
这要看特定的应用类型,有一些应用层协议可以用于构建特定的应用,比如你提到的聊天就可以用SIP协议,如果是用于传输实时数据(音频,视频等)则可以用RTP协议来进行
dreamskyashion 2004-12-15
  • 打赏
  • 举报
回复
一般情况是控制消息用tcp,其他用udp。你可以用同时使用这两种协议。回应用tcp发!
dancingbit 2004-12-15
  • 打赏
  • 举报
回复
间隔的长短取决于你实际应用的环境,如果链路延迟较大,时间可定长一点,延迟较小,时间可短一点。对于重复的问题,在应用程序中也应该有相应的处理逻辑。如果要使用UDP做到可靠传输,自己就必须考虑到所有可能的情况,不然TCP就没有存在的价值了。
dancingbit 2004-12-14
  • 打赏
  • 举报
回复
使用UDP要实现可行传输的话,可在程序中自己给数据包编号,并在接收端检查接收到的数据包的编号,如发现有数据包丢失,即向发送端发送消息,令其重传。
Bosee 2004-12-14
  • 打赏
  • 举报
回复
谢谢!不过重发数据有个问题,如要隔多长时间收不到回应后才重发呢?若之前发的数据包因为网络延迟和重发数据包均发送到对方,那么对方就等于收到两次相同命令,这该怎么处理呢?

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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