如果socket.ReceiveFrom (byte [] message, EndPoint endPoint)
用于在绑定的UDP套接字上接收数据,并且没有收到数据会发生什么情况?它是否继续等待数据到达或继续?我特别谈论UDP数据报。C#中的UDP套接字?
回答
如果目标是迫使你的插座停止后X号听秒,所以你可以做别的事情(比如检查应用程序是否正在关闭),并且你正在使用同步套接字,那么我会建议将Socket.ReceiveTimeout
设置为X秒数(因为Socket.ReceiveTimeout
以毫秒为单位的时间数为1000),然后捕获造成超时时引发的异常。
它会等待数据。如果这种行为不够好,可以使用异步接收。也使用UDPClient。不需要使用Socket本身。
如果没有数据可用于阅读,ReceiveFrom方法将阻塞,直到数据可用
来源:http://msdn.microsoft.com/en-us/library/aa329728%28v=vs.71%29.aspx
-1:如果您不推荐'UDPClient',不知道它们是什么?绝对有些情况下,你可以使用自己的'Socket'。 – 2011-12-31 05:23:57
我不是说每件事都使用UDPClient。如果你需要的话,最好用Socket连接UDP。 – 2011-12-31 05:25:52
从http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.receivetimeout.aspx:此选项仅适用于同步接收呼叫。如果超时超时,Receive方法将抛出一个SocketException.'所以不管你的回答是不正确的。 – 2011-12-31 05:28:23
- 1. UDP - 原始套接字 - C#
- 2. C中的双向UDP套接字
- 3. C++中的UDP套接字编程
- 4. UDP套接字
- 5. 接收错误与UDP套接字(C++)
- 6. Phonegap UDP套接字?
- 7. Unix域套接字,Udp套接字Objective C使用什么?
- 8. 跨平台C++ UDP套接字库
- 9. C#UDP套接字不听取响应?
- 10. C#udpclient/UDP套接字 - 全球地址
- 11. C++ UDP套接字数据包排队
- 12. C++多UDP套接字数据处理
- 13. UDP套接字(Ubuntu的9.10)
- 14. 双UDP套接字在两个不同的UDP套接字在Linux中
- 15. 用C#中的.net UDP套接字发送一个字节
- 16. UDP套接字编程HELP
- 17. UDP套接字监听
- 18. UDP本地套接字reliabiltiy
- 19. 上侦听UDP套接字
- 20. Java套接字UDP环路
- 21. Azure UDP套接字限制?
- 22. Udp套接字处理
- 23. Java - 关闭UDP套接字
- 24. PHP套接字UDP通信
- 25. UDP套接字处理
- 26. UDP套接字问题
- 27. 套接字编程UDP GetSocketOpt
- 28. 在Python中的UDP套接字编程
- 29. Web浏览器中的UDP套接字?
- 30. 如何在c中的UDP套接字中设置源端口?
有一个超时选项:'Socket.ReceiveTimeout',例如:'socket.ReceiveTimeout = 1000;' – 2011-12-31 05:22:43
@ M.Babcock感谢您的回答。所以我需要基本上设置接收超时 - 如果超过超时它会自动继续?那是对的吗?你确定这也适用于UDP套接字吗? – fdh 2011-12-31 05:32:36
如果超时过期,则不会产生您需要处理的异常。我在使用套接字异步时(这可能是由我在接收时进行的大量工作导致的)导致数据包丢失,所以在我的情况下,我必须实现超时并以超时的方式同步处理请求,以终止侦听线程。你的里程我有所不同。 – 2011-12-31 05:42:30