我有一个表示完整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字节数组即完整的TCP/IP数据包的第20-39个字节传递给Parse
函数,而不需要先将其提取到一个新的字节数组中?
在C++中,我可以这样做:
TCPHeader tcp = Parse( &packet[ 20 ] );
在C#中有类似的东西吗?如果可能,我想避免创建和随后垃圾回收临时字节数组。