オブジェクトからバッファーを読み取る do while ループがあります。whileNetworkStream
条件はnetworkStream.CanRead
、読み取り可能な限り、バッファーからの読み取りを続行する必要があります。唯一の問題は、バッファから読み取って文字列に変換するときに何もないことです。つまり、空です。
なぜそれが起こるのでしょうか?
これは ASP.NET(VS2005) アプリケーションです
@dtb コード情報:
私はNetworkStream
オブジェクトを渡していますnetworkStream
// between 2 functions in a loop
{
SendMessage(networkStream, message);
ReadMessage(networkStream);
}
面白いことに、再接続して再度接続すると、送信/読み取りは正常に機能します。実際にSend(ここでは例外はありません)またはNetworkStream
オブジェクトの再利用に問題がありますか。これはテストTCPサーバーでローカルに正常に動作していますが、本番環境(Windows Server 2003)で上記の問題が発生しています(つまり、ストリームから何も読み取れません-実際にタイムアウトするまで(ループを終了するまで) 10秒)
ReadMessage(networkStream)
{
if (networkStream != null && networkStream.CanRead)
{
byte[] myReadBuffer = new byte[1024];
StringBuilder myCompleteMessage = new StringBuilder();
do
{
int numberOfBytesRead = networkStream.Read(myReadBuffer, 0, myReadBuffer.Length);
string messageRead = Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead);
myCompleteMessage.Append(messageRead);
} while (networkStream.CanRead);
}
}