У меня есть цикл do while, который читает буфер из объекта NetworkStream
условие while равно networkStream.CanRead
, поэтому, пока оно может читать, оно должно продолжать чтение из буфера. Единственная проблема - когда я читаю из буфера и конвертирую в строку, в ней ничего нет. то есть его пусто.
Почему это случилось?
Это приложение ASP.NET (VS2005)
@ dtb Информация о коде:
Я передаю объект NetworkStream
networkStream
// between 2 functions in a loop
{
SendMessage(networkStream, message);
ReadMessage(networkStream);
}
Забавно, что если он снова подключается и снова подключается, Send / Read работает нормально. Может ли это быть проблемой с Send (я не получаю исключений) или с повторным использованием объекта 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);
}
}