У меня есть приложение на основе сокетов, которое предоставляет полученные данные объекту BinaryReader
на стороне клиента. Я пытаюсь отладить проблему, когда данные, содержащиеся в считывателе, не чисты ... то есть буфер, который я читаю, содержит старые данные за размером новых данных.Странное поведение с BinaryReader
В приведенном ниже коде:
System.Diagnostics.Debug.WriteLine("Stream length: {0}", _binaryReader.BaseStream.Length);
byte[] buffer = _binaryReader.ReadBytes((int)_binaryReader.BaseStream.Length);
Когда я закомментировать первую строку, данные не в конечном итоге быть грязным (или, не в конечном итоге быть грязным, как регулярно), а когда у меня есть это утверждение строки печати. Насколько я могу судить, со стороны сервера данные поступают чистым образом, поэтому вполне возможно, что у моей реализации сокета есть некоторые проблемы. Но есть ли у кого-нибудь идеи, почему добавление этой линии печати приведет к загрязнению данных чаще?
длина байтов должна быть длинной длины .. где вы объявляете это ...? – MethodMan
Например, если бы я хотел прочитать байты, я бы сделал что-то вроде следующего FileStream fs = File.OpenRead (inputfilepath); байт [] buffer = новый байт [fs.Length]; fs.Read (буфер, 0, buffer.Length); как пример – MethodMan
Я не знаю, как это применимо ... Насколько я знаю, ReadBytes выделяет буфер и возвращает его. – sohum