Я разрабатываю программное обеспечение, которое будет постоянно получать запросы разных типов и разной длины.
В частности, 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);
Я хотел знать, можно ли исправить этот метод или есть ли лучшие альтернативы для получения сообщений неизвестной длины?