Никак не могу понять как работают BinaryReader и BinaryWriter? Зачем в конструктор передаётся true, написано "чтобы при необходимости поток оставался открытым", что это означает?
При какой необходимости поток должен оставаться открытым?
Как вообще осуществляется передача строки в BinaryWriter? Если я правильно понял, то через BinaryWriter отправляется, что-то вроде массива типа Byte, то есть каждый символ кодируется как набор 0-й и 1-ц и добавляется в массив и пока не будет достигнут конец сообщения, данные будут отправляться.
reader = new BinaryReader(stream, Encoding.Unicode, true);
writer = new BinaryWriter(stream, Encoding.Unicode, true);
Также не понятно как работает метод BinaryReader.ReadString()? Как я понял он получает длину строки, потом саму строку. То есть декодирует массив типа Byte в указанную кодировку и сразу записывает декодированные символы в строку, до тех пор пока он не достиг конца строки, и если отправка сообщения приостановлена, то он будет ждать пока она не возобновиться.
На msdn сказано, что "метод BinaryReader.ReadString () считывает число блоками по 7 бит", это значит он получает число и делит его на блоки по 7 бит?
Сразу же возникают другие вопросы: зачем он делит число на блоки по 7 бит, какой тип данных передаётся в BinaryReader.ReadString ()? Я думаю, что передаётся массив типа Byte то есть само сообщение, а перед ним некое число типа Int32- длина строки.
Класс BinaryWriter реализует интерфейс IDisposable. Передавая в конструктор true в качестве последнего параметра можно задать, будет ли писатель закрыт при вызове IDisposable.Dispose.
Что касается "число блоками по 7 бит", то это имеется ввиду используемый в этих читателях/писателях способ сжатой записи для int:
Такой подход позволяет экономить место при записи коротких чисел. Например для записи числа 127 потребуется тольк 1 байт вместо 4, для 1257 потребуется 2 байта. Однако при этом получается оверхед для больших чисел, да и запись / чтение производится медленее.
Перед строкой записывается ее длинна в такой упакованной форме, а затем содержимое строки как есть.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости