0

我正在使用 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 中工作。但是我不知道为什么它们在程序中会发生冲突...谢谢~

4

2 回答 2

1

克隆 SharpPcap 源并查看示例

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

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

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

于 2011-02-19T14:03:14.880 回答
0

名称项目:MultipleFiltersOnDevice。

代码如下:

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

这个对我有用。

于 2018-07-04T12:34:23.163 回答