Я не привык к C # (я обычно делаю C ++) и пытаюсь отладить приложение, которое не принадлежит мне вообще.
Мое приложение пытается прочитать большую строку из сокета TCP. Скажем, около 140 000 символов. И это не удается. Позвольте мне объяснить, как.
Мой код здесь (на самом деле внутри цикла)
System.IO.Stream inputStream;
//...
// Loop code:
buffer = new byte[2];
readByteForLength = inputStream.Read(buffer, 0, 2);
Оказывается, что Read () может корректно заполнить буферный массив до точки, где он заполняет его NULL-символами вместо допустимых значений. И он возвращает 2, как это было бы в правильном случае.
У вас есть идея, почему такие NULL символы?
Пакет tcp все еще находится в сети, когда я пытаюсь прочитать больше моих данных?
Есть ли предел для inputStream, прежде чем он будет вести себя неправильно?
Обновление:
Кстати, это приводит к той же проблеме:
System.IO.StreamReader sr = new StreamReader(inputStream);
string s = sr.ReadToEnd();
File.WriteAllText(@"c:\temp\toto.txt", s);
На самом деле файл toto останавливается именно там, где я сталкиваюсь с проблемой в первой версии моего кода, хотя он немного длиннее, потому что остальная часть строки заполняется символами NULL, почти до 400 000!