データのストリームを受信したい。そのため、データが枯渇することがあります。その場合、Receive
メソッドがこれまでに受け取ったものを返すとよいでしょう。
.Netを使用していて、そのメソッドSocket
を呼び出すとReceive
、バッファーが完全にいっぱいになるまで、その呼び出しはブロックされますか?それとも、少なくとも1バイトを返すことができるとすぐに戻りますか?(ソケットが閉じていないことを前提としています)
サイズパラメータを明示的に渡しても問題ありませんか?そして、非同期メソッドBeginReceive
は何か影響がありますか?(どちらの場合も、動作は同じになると思います)
この回答を読むときは、バッファがいっぱいになることを常に期待する必要があるようです。これは、を実行するようにアドバイスしているためですwhile (bytesRead == bytesRequested)
。しかし、MSDNドキュメントの例では、while (bytesRead > 0)