Я пытаюсь использовать EndianBinaryReader
и EndianBinaryWriter
, которые Джон Скит написал как часть своего misc utils lib . Он отлично работает для двух использований, которые я использовал.
Первое чтение из сетевого потока (TCPClient
), где я сижу в цикле, читая данные по мере их поступления. Я могу создать один EndianBinaryReader
, а затем просто избавиться от него при завершении работы приложения , Я строю EndianBinaryReader
, передавая TCPClient.GetStream
in.
Сейчас я пытаюсь сделать то же самое при чтении из UdpClient, но у него нет потока, поскольку он меньше соединения. поэтому я получаю данные, как это
byte[] data = udpClientSnapShot.Receive(ref endpoint);
Я мог бы поместить эти данные в поток памяти
var memoryStream = new MemoryStream(data);
, а затем создайте EndianBinaryReader
var endianbinaryReader = new EndianBinaryReader(
new BigEndianBitConverter(), memoryStream,Encoding.ASCII);
но это означает, что мне нужно создавать новый читатель с порядком байтов каждый раз, когда я читаю. Есть ли способ, где я могу просто создать отдельный поток, который я могу просто продолжать обновлять inputsream данными с клиента udp?