0
我正在編寫一個應用程序來偵聽傳入的UDP數據包。有接收許多不同類型的數據包的可能性。例如,數據包可以這樣定義,C處理多種類型的UDP數據包
包A: int a | char b | int c |包裝B:|
包B:短int d | int e | char f |
等等。
我的問題是,鑑於我收到多種類型的消息,協調正在發送的內容和正在閱讀的內容的最佳方法是什麼?
正如我所看到的,可以在每條消息的開始處添加一個「標題」,定義其類型,或者如果我知道每個數據包的大小,則可以讀取消息長度並將其與我列出的相比較。
此外,如果後者是一個選項,是否保證每次都是預期的長度?
編輯:
我也能看到只用數據包的長度可能是一個問題,因爲可能有多個消息類型相同的長度。
對'recvmsg'的每個調用都會返回一個完整的數據包(假設緩衝區足夠大),或者根本沒有。所以只要你的緩衝區覆蓋了所有可能的數據包,就能保證接收到發送的確切數據包。無論如何你仍然需要一個類型頭文件。 – 2013-05-08 18:28:39