首页  人才招聘  项目交易  BLOG  兴趣小组  图书  资讯  文章  下载  源码  网友作品  刻盘服务 

您所在位置:论坛首页 — 求助:使用UdpClient.Receive方法接收对方回复时,如若对方没有答复,怎么解决Receive方法死等的问题?
打印本页 保存页面
 求助:使用UdpClient.Receive方法接收对方回复时,如若对方没有答复,怎么解决Receive方法死等的问题?

MSDN:Receive方法将阻塞,直到数据报从远程主机到达为止。
可如若远程主机无数据报返回,或者数据报丢失,那岂不是Receive方法将永远等下去了么?如何解决此问题,或设置超时时间?盼答,非常感谢

如若推荐一些供相关的文章也不胜感激,如果用代码说明希望能用文字说明下核心的思想

解决后立即结贴
 回复内容
【lingbo_wx】:
控制接受次数和一次需要的时间来试试阿

【shield0771】:
抱歉,不大明白楼上的意思,请问是在什么地方设置控制接受次数和一次需要的时间?


【CathySun118】:
一般用设置超时时间的方法

【shield0771】:
请问怎么设置超时时间呢?

【jiatong1981】:
MARK

【hertcloud】:
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);


【shield0771】:
学习

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

【shield0771】:


【wzd24】:
设置超时间对异步操作无效!不管是发送还是接收!

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

【wuhuabucai】:
超时时间

【Red_angelX】:
异步就ok了

【Red_angelX】:
BeginReceive

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


【wangzh_2002】:
用定时器,定时器时间到如没有接收到数据,就清除接收缓存,并发错误消息。

【Moon1】:
呵呵,我来接分 : )

【shield0771】:
我用异步的BeginReceiveFrom解决了

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

感谢诸位的帮忙

【Red_angelX】:
我对给与我的分数不太满意!

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

【wzd24】:
好像是倒分贴!
版主来处理一下!

广告
 
最新招聘信息

关于本站 - 网站导航 - 联系站长 - BUG报告 - 友情链接 - 赞助本站
Copyright© 1999-2008 Programfan.com. All Rights Reserved
论坛制作&维护:Hannibal    Email: webmaster@pfan.cn
最佳浏览效果:IE6.0+ 或 FireFox 1.5+ 分辨率:1024*768