本帖最后由 oyljerry 于 2012-10-20 15:00:18 编辑

解决方案 »

  1.   

    sendto 函数不会阻塞吧? 这又不是tcp
    引发的延迟只是拷贝到 socket buffer的时间段,几乎可以忽略
    你的代码出现阻塞的应该不在这里,更多的恐怕是你的程序逻辑设计有问题
      

  2.   

    UDP你怎么能确保对方能收到呢?如何来判断目标机器的主页损坏?自己定义通信协议保证安全性还不如用TCP
      

  3.   

    不将UDP的socket设置为非阻塞状态时,接收方突然拔了网线,sendto函数就会有2秒左右的延时!我将它设置为非阻塞模式,就不会出现这种情况了!
      

  4.   

    正常情况sendto不会阻塞,如果对方拔了网线,应该是本机通过ARP查找对方的硬件地址,没有得到回应,因为此时数据无法发送出去,导致你的sendto有短暂的阻塞.
      

  5.   

    Geoff08Zhang,要消除这种短暂阻塞,除了采用非阻塞方式,还有其他方法吗?
      

  6.   

    设置超时时间即可,比如2MS.可了解下UDX协议,基于UDP的可靠传输协议。
      

  7.   

    超时时间我设过,不过对于对方拔了网线不管用!还是谢谢wwllg了!