У меня есть массив байтов, который представляет полный пакет TCP/IP. Для пояснения массив байтов упорядочен следующим образом:
(заголовок IP - 20 байт) (заголовок TCP - 20 байт) (полезная нагрузка - X байтов)
У меня есть функция Parse
, которая принимает байтовый массив и возвращает объект TCPHeader
. Это выглядит так:
TCPHeader Parse( byte[] buffer );
Учитывая исходный массив байтов, вот как я сейчас вызываю эту функцию.
byte[] tcpbuffer = new byte[ 20 ];
System.Buffer.BlockCopy( packet, 20, tcpbuffer, 0, 20 );
TCPHeader tcp = Parse( tcpbuffer );
Есть ли удобный способ передать массив байтов TCP, т.е. байты 20-39 полного пакета TCP/IP, в функцию Parse
без предварительного извлечения его в новый массив байтов?
В С++ я мог бы сделать следующее:
TCPHeader tcp = Parse( &packet[ 20 ] );
Есть ли что-то подобное в С#? Я хочу избежать создания и последующей сборки мусора из массива временных байтов, если это возможно.