2012-11-20 45 views
0

我有一個客戶正在尋求減少通過電線傳輸的字節數到絕對最小值。當創建一個udpClient類並調用receive方法時,返回一個字節數組。目前我使用receiveBytes.Length來獲取消息中的字節數。使用UDP傳輸數據時,是否需要將消息長度作爲消息的一部分?

但是,在多個消息進來的重負載下,有人認爲這是不夠的,證明需要發送數據包長度作爲消息的前2個字節。

我可以依靠一個完整的數據包還是沒有收到數據包,因此依賴於Length屬性?

編輯

感謝所有的意見。

使用UDP是TCP的補充。當我們需要實現序列和保證時使用TCP。 UDP將用於任何順序但不重要的數據。是的,我知道這意味着要添加OTT加密。我的問題只能依靠完整的數據包到達。

+0

您可以依賴收到的完整數據包。你不能依靠收到的所有數據包。 –

+0

如果你需要序列號和校驗和,那麼你需要TCP .... –

+0

L.B.你使用TCP。 –

回答

1

每個UDP數據包是獨立傳送的,並且不保證其他數據包將到達。

你會如何(在收到一個)知道等待另一個,如果它從來沒有出現,你會怎麼做?漫長的說法,你會收到發送的消息或根本沒有。

+0

具體來說,當我收到數據包時,數據包是否包含離開原始機器的所有字節? –

+1

是的。它必須。 UDP中沒有用於分段的選項 - 每個接收到的字節集表示單個發送的一組字節。 –

+0

太棒了,我有我的答案,謝謝! –

相關問題