1

TcpClient の NetworkStream を使用して、バイトを .NET サーバーから、Socket 経由で受信する Silverlight クライアントに送信しています。クライアントからの送信は、Socket.SendAsync を介して行われます。

私の質問は、メッセージの長さを送信して自分でいくつかのバイトメッセージをまとめる必要なしに、両側で「一度に」受信できると予想できる最小バイト数はどれくらいかということです。

ありがとう、アンドレイ

4

2 に答える 2

4

絶対にメッセージの長さを送信する必要があります。ネットワーク ストリームとは、まさにそれ、つまり情報のストリームです。基本的に、メッセージの終わりを認識する方法は 3 つあります。

  • データに長さのプレフィックスを付けます (少なくとも理論的には、1 つのパケットですべての長さデータを取得できない可能性があることを忘れないでください)。
  • メッセージのデリミタ/ターミネータを使用する
  • 接続ごとに片道 1 つのメッセージのみを送信し、その後接続を閉じます
于 2010-11-20T17:28:50.910 に答える
3

ネットワーク設定によって異なりますが、ネットワークノードのデフォルトの長さは1500バイトであり、ほとんどのモデムはそれを取り除いています。したがって、ほとんどの家庭のパケットサイズは1460バイトです。

あなたの状況に最適なサイズを計算することができます

ただし、ユーザーはいつでも独自の設定を行うことができるため、すべてのクライアントに最適なパケットサイズが得られる保証はありません。

于 2010-11-20T16:56:53.983 に答える