3

私はソケットプロジェクトに取り組んでいます。TCP で ~4kb のデータを送信したい。ここで質問する必要があります。つまり、TCP で ~4kb のデータを送信した場合、データ ハンドラー関数はこのデータをもう一度受信できますか? つまり、RECEIVE(サーバー側)関数は2回返すことができますか(〜4kbのデータを1回送信した場合)?これが理解できたら、自分でパケット処理システムを作り始めます。

4

2 に答える 2

3

要するに:はい。

TCP はバイト ストリームを転送します。TCP 接続ではメッセージ (およびその境界) について言及されていません。2 バイトを送信しても、2 つの別々のチャンクで受信できます (理論的にはもちろん、実際にはほとんどありません)。したがって、データ ストリームにいくつかのマークを付ける必要があります。ヘッダーに少なくとも次のメッセージの本文の長さが含まれるすべてのメッセージの前に、「メッセージヘッダー」を書くことをお勧めします。また、受信時にヘッダー自体も断片化される可能性があることに注意してください。

于 2013-06-15T14:21:44.030 に答える