请大家把自己知道的理论上的或是实际的经验共享一下吧。比如说怎么尽可能少的防止丢包。我现在的情况是一个C/S通信中使用了UDP,先是在本机上做测试,感觉总是有一些包被弄丢了,要么客户端发给服务器的包弄丢了,要么服务给客户端的响应丢了,或是顺序乱了。我觉得在本机上或是局域网内UDP应该是有保障的啊,像QQ这样的广域网的UDP应用都做得很好,有哪些技巧呢?

解决方案 »

  1.   

    基于UDP是Packet的特性,不连接的,所以此协议是不负责不丢包的。
    要想不丢包,必须你这层来实现。
    具体怎么实现UDP不丢包,请看
    http://community.csdn.net/Expert/topic/3660/3660951.xml?temp=.4094507
      

  2.   

    为什么非得用UDP,你自己写消息控制协议我觉得有点难。
    UDP不保证不丢包,不重复,不乱序,你也控制不了,你必须编程去处理。
    看看TCP协议吧,为了在一个不可考的网络上实现可靠投递,有多少复杂的算法。
    UDP实现简单的事件,比如登陆还可以,这就是QQ做的,但是,QQ聊天和传送文件就都是用TCP了。
      

  3.   

    UDP是无连接的,因而包的适当丢弃是正常的,但如果丢包很多,就有可能于程序有关了
      

  4.   

    udp 不保证在 传输过程中的正确性? 所以要在高层 效验/重发
      

  5.   

    http://hackangel.go1.icpcn.com/lilisoft/UDPTrsmtFile.rar
      

  6.   

    udp包丢失时什么正常的事情
    要减少丢包,可以模拟tcp的停-等协议 
    就是发一个包,等待确认,如没有确认,再发!
      

  7.   

    一般是用udp尽量去模仿tcp,加上确认,滑动窗口,重发等机制.
    http://search.csdn.net/Expert/topic/213/213062.xml?temp=.6982843
      

  8.   

    嗯,多谢各位。
    我暂时以TCP传送关键数据,UDP传送量大而不太重要的数据,效果很好。