簡體   English   中英

C處理多種類型的UDP數據包

[英]C Handling multiple types of UDP packets

我正在編寫一個監聽傳入的UDP數據包的應用程序。 可能會收到許多不同類型的數據包。 例如,數據包可以這樣定義,

套餐A: 整數| 字符b | int c |

套餐B:| 短整數d | 詮釋| 字符f |

等等。

我的問題是,考慮到我正在接收多種類型的消息,如何協調正在發送的內容和正在閱讀的內容?

正如我所看到的,可以在每個消息的開頭添加一個“標題”,以定義其類型,或者,如果我知道每個數據包的大小,我可以讀取消息的長度並將其與列出的內容進行比較。

另外,如果選擇后者,則每次都保證包的長度是預期的嗎?

編輯:

我還可以看到僅使用數據包長度可能會出現問題,因為可能有多個相同長度的消息類型。

使用包含魔術字和定義該類型的代碼的標頭。 這樣,您可以確保它是針對您的應用程序的,並確定要使用的正確解析器。

序列號和時間戳也可能用於檢測丟失的數據包和未按順序到達的數據包。 這些是UDP遇到的常見問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM