【问题标题】:The second LivePCapDevice in SharpPCap doesn't work?SharpPCap 中的第二个 LivePCapDevice 不起作用?
【发布时间】:2011-05-27 11:18:39
【问题描述】:

我正在使用lib SharpPCap 来捕获数据包,然后分析它们以在PacketArrivalEventHandler 函数中找到flv 视频地址。类的主要部分是这样的:

class addrdetector
{
    private LivePCapDevice device;
    private device_OnPacketArrival(object sender, CaptureEventArgs e)
    {
        /* some analysis and some output */
        if (match)
        {
            device.StopCapture();
            device.Close();
        }
    }
    public Analyse()
    {
         var devices = LivePcapDeviceList.Instance;
         device = devices[2];
         device.OnPacketArrival +=
            new PacketArrivalEventHandler(device_OnPacketArrival);  
         device.Open();
         device.StartCapture();
    }
}

如果我在程序中有 2 个 addrdector 实例,则第一个实例具有正确的输出,但第二个实例没有任何输出。似乎第二个无法捕获任何数据包。
我在同一个主函数中测试了 2 个 LivePCapDevice 实例,它们工作正常。他们也可以在 2 个 EXE.s 中工作。但是我不知道为什么它们在程序中会发生冲突... 谢谢~

【问题讨论】:

    标签: c# sharppcap


    【解决方案1】:

    克隆 SharpPcap 源代码并查看示例

    目前我无法引用确切的示例,因为我不在我的开发计算机旁,但我绝对肯定有一个示例说明如何添加额外的 LivePcapDevice 实例。

    这并非不可能,但解决方案并不直观。我认为使用的示例被称为“CaptureMultipleFilters”。

    祝你好运,我会尽快用更好的数据更新这个答案。

    【讨论】:

      【解决方案2】:

      名称项目:MultipleFiltersOnDevice。

      代码如下:

      var device1 = CaptureDeviceList.Instance[i];
      var device2 = CaptureDeviceList.New()[i]; // NOTE: the call to New()
      

      它对我有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-02-02
        • 1970-01-01
        • 2021-06-12
        • 1970-01-01
        • 2018-09-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多