C# 检查TcpLayer或udpLayer是否不为空

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

我正在使用pcap.net从pcap文件中读取数据包,并在匿名后将其保存到新的pcap文件中(更改一些字段)。我有个问题。某些pcap文件的数据包不正确或不完整,例如,它们没有tcp层或有效负载。 我想知道如何检查tcplayer是否存在

这是我代码的一部分:

**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;