初心者向けの質問: 少し前に質問した質問のフォローアップのようなものです。
この同期ソケット チュートリアルhttp://msdn.microsoft.com/en-us/library/6y0e13d3.aspx、特に以下のコードの 1 行を理解しようとしています。
質問: プログラム フローを正しく理解していることを確認したいと思います。handler.Receive(bytes)はいつ返されますか? 「オーバーフロー」して 1024 バイト以上を受信した場合、受信したバイト数をint bytesRec** に返して格納しますか? **もしそうで、ばかげているように聞こえるかもしれませんが、 * data * 変数に 1024 バイトを格納していて、その時点で到着する可能性のあるそれ以上のバイトをリッスンしていないため、さらに多くのバイトが到着するとどうなりますか? それとも、心配せずに .net に任せるべきでしょうか?
Socket handler = listener.Accept();
data = null;
// An incoming connection needs to be processed.
while (true) {
bytes = new byte[1024];
int bytesRec = handler.Receive(bytes);
// My question is WHEN does the following line
// get to be executed
data += Encoding.ASCII.GetString(bytes,0,bytesRec);
if (data.IndexOf("<EOF>") > -1) {
break;
}
}