ネットワークプログラミング相談室 Port29
レス数が900を超えています。1000を超えると表示できなくなるよ。
0935デフォルトの名無しさん
2014/10/26(日) 20:22:36.66ID:RQyk7KlL下記のプログラムを実行すると、データを末尾まで取得していないにもかかわらず、ループから抜ける事があります。
readByteCount == 0 のみをループの脱出条件にすると、Readで止まって(恐らくタイムアウト待ちになって)しまいます。
データを末尾まで確実に受取るにはどうすればよいのでしょう?
TcpClient client; // 接続処理、略
SslStream stream; // clientとの関連付け処理、略
byte[] command = Encoding.UTF8.GetBytes( ”__TAG__ FECTH ...略” );
stream.Write( command );
byte[] byteBuffer = new byte[ 256 ];
int offset = 0;
while ( true )
{
int readByteCount = stream.Read( byteBuffer, offset, byteBuffer.Length - offset );
offset += readByteCount;
if ( client.Available == 0 ||
readByteCount == 0 )
{
break;
}
if ( offset >= byteBuffer.Length )
{ // バッファの拡張処理 }
}
レス数が900を超えています。1000を超えると表示できなくなるよ。