如果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