我有一个 do while 循环,它从一个对象中读取一个缓冲区,NetworkStream
while 条件是networkStream.CanRead
只要它可以读取,它就应该继续从缓冲区中读取。唯一的问题是当我从缓冲区读取并转换为字符串时,其中没有任何内容。即它是空的。
为什么会这样?
这是一个 ASP.NET(VS2005) 应用程序
@dtb 代码信息:
我正在传递一个NetworkStream
对象networkStream
// between 2 functions in a loop
{
SendMessage(networkStream, message);
ReadMessage(networkStream);
}
有趣的是,如果它重新连接并再次连接,发送/读取工作正常。这实际上是发送的问题(我在这里没有例外)或NetworkStream
对象的重用。这在测试 TCP 服务器上本地运行良好,但是在生产(Windows Server 2003)中我遇到了上述问题(即无法从流中读取任何内容——直到我实际超时(退出循环)之后10s)
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);
}
}