MSDN:Receive方法将阻塞,直到数据报从远程主机到达为止。
可如若远程主机无数据报返回,或者数据报丢失,那岂不是Receive方法将永远等下去了么?如何解决此问题,或设置超时时间?盼答,非常感谢如若推荐一些供相关的文章也不胜感激,如果用代码说明希望能用文字说明下核心的思想解决后立即结贴

解决方案 »

  1.   

    socket编程设置socket.Receive()的等待时间:
        IPEndPoint remohost=new IPEndPoint(IPAddress.Parse("192.168.0.125"),5010);
        Socket s=new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);
       s.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.SendTimeout,time_out);
       s.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReceiveTimeout,time_out);
      

  2.   

    请问SetSocketOption里设置ReceiveTimeout能否同样作用在异步的EndReceive上呢?
      

  3.   

    那请问在异步接收的过程中如何处理收不到回复的情况呢?
    ENDRECEIVE也会一直等下去,没有超时的话岂不是一直占用资源了么?
      

  4.   

    那请问在异步接收的过程中如何处理收不到回复的情况呢?
    在异步开启的新线程中ENDRECEIVE也会一直等下去,没有超时的话岂不是一直占用资源了么?
      

  5.   

    我用异步的BeginReceiveFrom解决了感谢Moon1(静静的黎明)在 http://community.csdn.net/Expert/topic/5489/5489987.xml?temp=.3631098 中给与的帮助,也因此解决了本帖的问题,因此两贴合作一帖给分感谢诸位的帮忙
      

  6.   

    Red_angelX(八戒) 
    这个。汗,也许我的给分标准不是很让你满意吧
    我的给分是按照对我的疑问提供的帮助来给的,其实你给出回答的时候,我已经在使用异步BeginReceiveFrom了(虽然帖子里没有说明),只是由于对SOCKET理解得不够深刻,代码出了很多问题,所以另开贴提出了疑问,疑问一旦解决本帖也随之解决,因此我如此给分,希望你能理解
      

  7.   

    昏,你看清楚再下结论好不我正是因为怕人误解才回复了这么一段
    ——————————————————————————————————————
    我用异步的BeginReceiveFrom解决了感谢Moon1(静静的黎明)在 http://community.csdn.net/Expert/topic/5489/5489987.xml?temp=.3631098 中给与的帮助,也因此解决了本帖的问题,因此两贴合作一帖给分感谢诸位的帮忙
    ——————————————————————————————————————
    应该没有违反CSDN的规定吧?
      

  8.   

    汗,不好意思wzd24,看到你的回复才突然发现忘记给你的回复“设置超时间对异步操作无效!不管是发送还是接收!”给分了。。解决了我的一个疑问,却没有给分,的确是非常抱歉总觉得有点越描越黑的感觉。。不过还是在此说声抱歉了,的确是我的失误