0

着信 UDP パケットをリッスンするアプリケーションを作成しています。さまざまな種類のパケットを受信する可能性があります。たとえば、パケットは次のように定義できます。

パッケージ A: | 整数 | 文字 b | 整数 c |

パッケージ B: | short int d | int e | char f |

など。

私の質問は、複数の種類のメッセージを受信して​​いることを考えると、送信されているものと読んでいるものを調整するための良い方法は何ですか?

私が見たように、「ヘッダー」を各メッセージの先頭に追加してそのタイプを定義するか、メッセージの長さを読み取って、各パケットのサイズがわかっている場合は、リストしたものと比較することができます。

また、後者がオプションである場合、パケットは毎回期待される長さであることが保証されていますか?

編集:

また、同じ長さのメッセージ タイプが複数存在する可能性があるため、パケット長を使用するだけで問題が発生する可能性があることもわかります。

4

1 に答える 1

3

マジック ワードとタイプを定義するコードを含むヘッダーを使用します。そうすれば、それがアプリケーション向けのものであることを保証でき、使用する正しいパーサーを識別できます。

シーケンス番号とタイムスタンプは、失われたパケットや順不同で到着したパケットを検出するのにも役立ちます。これらは、UDP で発生する一般的な問題です。

于 2013-05-08T18:33:47.357 に答える