C# 检查TcpLayer或udpLayer是否不为空
我正在使用pcap.net从pcap文件中读取数据包,并在匿名后将其保存到新的pcap文件中(更改一些字段)。我有个问题。某些pcap文件的数据包不正确或不完整,例如,它们没有tcp层或有效负载。 我想知道如何检查tcplayer是否存在 这是我代码的一部分:C# 检查TcpLayer或udpLayer是否不为空,c#,tcp,pcap.net,C#,Tcp,Pcap.net,我正在使用pcap.net从pcap文件中读取数据包,并在匿名后将其保存到新的pcap文件中(更改一些字段)。我有个问题。某些pcap文件的数据包不正确或不完整,例如,它们没有tcp层或有效负载。 我想知道如何检查tcplayer是否存在 这是我代码的一部分: **TcpLayer tcpLayer = (TcpLayer)packet.Ethernet.IpV4.Tcp.ExtractLayer(); UdpLayer udpL
**TcpLayer tcpLayer = (TcpLayer)packet.Ethernet.IpV4.Tcp.ExtractLayer();
UdpLayer udpLayer = (UdpLayer)packet.Ethernet.IpV4.Udp.ExtractLayer();**
没有tcp或udp层的pcap文件在这些行中有错误。
如何检查此行之前tcpLayer是否不为空?
谢谢以下是一些验证代码:
if (packet == null)
return;
if (packet.Ethernet == null)
return;
if (packet.Ethernet.EtherType != EthernetType.IpV4)
return;
if (packet.Ethernet.IpV4 == null)
return;
if (packet.Ethernet.IpV4.Protocol != IpV4Protocol.Tcp &&
packet.Ethernet.IpV4.Protocol != IpV4Protocol.Udp)
return;
if (packet.Ethernet.IpV4.Transport == null)
return;