C# BerkeleyPacketFilter,按TCP和端口过滤

C# BerkeleyPacketFilter,按TCP和端口过滤,c#,tcp,port,packet-capture,packet-sniffers,C#,Tcp,Port,Packet Capture,Packet Sniffers,使用BerkeleyPacketFilter按TCP和端口进行筛选 从Pcap.net转换教程中的代码时出现问题。需要能够通过TCP过滤数据包并插入端口值。我无法理解BerkeleyPacketFilter语法 //choose port Console.WriteLine("Choose port nr"); string portnr = Console.ReadLine(); int port = Int32.Parse(po

使用BerkeleyPacketFilter按TCP和端口进行筛选

从Pcap.net转换教程中的代码时出现问题。需要能够通过TCP过滤数据包并插入端口值。我无法理解BerkeleyPacketFilter语法

        //choose port
        Console.WriteLine("Choose port nr");
        string portnr = Console.ReadLine();
        int port = Int32.Parse(portnr);


        // Compile the filter
        using (BerkeleyPacketFilter filter = communicator.CreateFilter(port))
        {
            // Set the filter
            communicator.SetFilter(filter);
communicator.CreateFilter内部的语法是什么(如何插入int端口)): 我还做了以下工作:

       IpV4Datagram ip = packet.Ethernet.IpV4;
       TcpDatagram tcp = ip.Tcp;
这与PcapDotNet.Packets.Transport.TransportDatagram有关

如果可以相信,则
CreateFilter
方法不将整数作为参数,它将字符串作为参数

这并不奇怪,因为这表明
pcap\u compile()
将字符串作为参数,并且表明筛选器是字符串

如果需要与给定TCP端口号匹配的字符串,则该字符串为“TCP端口N”,其中N为端口号。必须使用<代码>端口>代码>,将其转换为字符串,并将其与字符串“TCP端口”连接(与“端口”之后的空白完成),或者只与“TCP端口”连接<代码> PORTNR < /代码>字符串。


请注意,您还必须决不假设
communicator.CreateFilter()
将成功。我没有看到Pcap.Net的任何联机文档,因此我不知道
CreateFilter
方法是否会为无效的筛选器表达式引发异常。

谢谢!是否还有其他方法代替communicator.CreateFilter()?使用ip、tcp和端口进行过滤的另一种方法?在C中#