2013-08-07 59 views

回答

1

如果您希望通過套接字接收任何內容,那麼您希望在整個時間內都能收到它。

如果您希望在未收到任何回覆的情況下發送多封郵件,則您已經有設計錯誤,但似乎沒有一個很好的理由說明爲什麼要繼續打開和關閉UDP套接字。只要有必要,讓插座保持打開更合理?

+0

這是沒有設計錯誤,因爲它只是一個路由器發送統計信息。問題是,真正讓一個無限長的套接字變得更加敏感,還是創建短的套接字更好? – Shaac

+0

讓我們來回顧一下。它是否真的有意義*不*有一個'無限長的插座'?並創建一個新的套接字每個傳輸?並可能失敗?如果你已經擁有了插座,你就不會失敗? – EJP

1

因爲UDP是一個面向數據包的協議,所以沒有「連接」來打開或關閉。如果要發送大量消息到特定地址,則可以在UDP套接字上調用connect,然後使用sendrecv來通信,而不是sendtorecvfrom。這樣,您不必指定要在每次函數調用時發送數據的地址,但這並不意味着建立了連接。

因此,是否最好創建一個套接字並重用它,或者每次創建一個套接字,更多地取決於您的編程風格:如果您創建大量套接字並長時間存儲而不使用它們,你最終可能會用盡套接字。再次,如果您在一個緊密的循環中執行操作,經常要求操作系統創建新套接字可能會成爲性能瓶頸。

+0

因此,套接字創建過程只是存儲要在發送功能中使用的參數? – Shaac

+0

我有我的條款混亂:你必須調用'socket'來獲得一個fd,所以你可以與操作系統交談。調用'connect'只存儲參數。 – Joni

相關問題