4

これらの可能な答えを考えることができます:

  • データが IP スタック内の内部バッファーに書き込まれるまで。
  • データがネットワーク経由で送信されるまで。
  • 相手機から受信確認があるまで。
4

2 に答える 2

4

送信側の送信バッファにデータが書き込まれるまで。
したがって、バッファがいっぱいになるとブロックされます。

データがまだ送信されていない場合、ネットワークの問題または受信側の受信バッファーがいっぱいであるために、送信バッファーがいっぱいになる可能性があります。

実行できる実験があります。送信者と受信者を作成し、送信者のソケット送信バッファーを小さなものに設定し、受信者の受信バッファーを小さなものに設定します。

送信を開始し、受信側で接続を受け入れますが、受信しません。送信バイト数が SenderSendBuffer + ReceiverReceiveBuffer 程度になるとソケットがブロックされます。

于 2011-06-07T08:38:39.527 に答える
0

NetworkStreamデータをバッファリングしません。最終的に、への呼び出しはソケット送信関数呼び出しにNetworkStream.Write変換されます。この関数に関する MSDN の記事は次のように述べています。

送信機能が正常に完了しても、データが正常に配信され、受信者に受信されたことを示すわけではありません。この関数は、データが正常に送信されたことを示すだけです。

これはあなたの質問に答えていますか?

于 2011-06-07T08:47:28.833 に答える