0

UDP メッセージの信頼性を処理する簡単な方法を見つけようとしています。それぞれにシーケンス ID を付けて送信し、ID を以前に受信した ID と比較することで、損失を検出できると考えました。私は通常整数を使用しますが、それが無限に増加し続けるという考えは私には合いませんでした。

base64 を使用することもできますが、それは読みやすくするだけで、実際には何も解決しません。

日付スタンプを前に付けることも考えましたが、真夜中頃に受信したメッセージを処理する場合、それはちょっとずさんです。

たとえそれが整数に固執するだけであっても、誰かが提案できるより良い解決策が必要だと思います。

4

2 に答える 2

1

この特定のジョブに対する私の好みは、高解像度のタイムスタンプがシードされたインクリメント (少なくとも 64 ビット) 整数シーケンスを使用することです。このように、送信側で状態の喪失があったとしても、シーケンスがその時点から再シードされると、単純に前方にジャンプする可能性が高くなります。これにより導入される可能性のある Year 10K バグは、Lazarus Long の課題として残されています。:-)

シーケンス ギャップの検出は本質的に最適化であることに注意してください。送信側は、ack が受信されるまで再送信する必要があり、nack (ギャップまたは破損したデータグラムの場合) は単に以前の再送信を誘発します。(ZMODEM はこのルールのまれな例外であり、デフォルトの動作モードはストリームの最後に単一の ack を使用し、他のすべての再送信は nack によって管理されます。ただし、ファイル転送プロトコルとしては、基本的に 1 つの巨大なプロトコルです。マルチパートデータグラム)

于 2009-06-04T04:17:48.987 に答える
0

TCP を使用しますか? これが、TCP が UDP と異なる理由です。

皮肉を言うつもりはありませんが、これが TCP が存在する理由です。

于 2009-06-04T04:29:25.667 に答える