1.我在程序中定义了一个消息结构,采用udp方式发送,但是如果出现数据接收并发,也就是第一个包还没处理,第二个包已经到达,那么这种情况会不会丢包,onrecieve如何处理?
2.udp的sendto方法,如何才能知道消息已经成功被接收?

解决方案 »

  1.   

    1,在包内自定义编号,解决包的顺序问题2,udp的sendto方法 ,没有办法知道是否收到。可以接受到消息后再发送一条确认信息。
      

  2.   

    采用消息号的问题是,接受方此时并不知道有多少包在等待接收,难道设置一个超级大的buffer进行循环判断?
      

  3.   

    您所想的是在UDP上,完成可靠的通信的问题,如果只是这样,可以参考UDT
      

  4.   

    udp会丢包,自己要订规则判断
      

  5.   

    唉,又碰到问题了。
    利用socket的消息机制,重载了socket的onrecieve方法,在recieve方法中调用
    socket的recive进行接受数据。问题:服务器发送单个消息数据没有问题,可是当数据量大时我只能在服务器端分多次发送,问题出现在onrecieve,当前一个消息正在处理后一个消息已经到来,也就是服务器发送速度比客户端接收速度快,无法处理后面的消息。如果用循环读取又碰到问题:就是如果接收的都是同一种消息没问题,可是如果接收到另外的消息结构(也就是消息不定长),就不好判断了。