Какой правильный метод для чтения из NetworkStream? - PullRequest
0 голосов
/ 22 декабря 2018

Я разрабатываю программное обеспечение, которое будет постоянно получать запросы разных типов и разной длины.

В частности, length - это та часть, которая меня интересует, потому что я не знаю длинусообщение, которое я пойду, чтобы получить.

На данный момент я написал этот код, который записывает полученные байты в byte[] очень большого размера, а затем копирует в секунду byte[] толькодлина данных.

//get the network stream
NetworkStream networkStream = tcpClient.GetStream();

//initialize an bytes array of size 5 MB
byte[] largeArray = new byte[5242880];

//write the bytes in the largeArray
//determines the length of the received message
int lenght = networkStream.Read(largeArray, 0, largeArray.Length);

//initialize an bytes array with the correct message length
byte[] messageArray = new byte[lenght];

//make a copy from the largeArray to the messageArray with the right lenght
Buffer.BlockCopy(largeArray, 0, messageArray, 0, messageArray.Length);

Я хотел знать, можно ли исправить этот метод или есть ли лучшие альтернативы для получения сообщений неизвестной длины?

...