SharpPCap中的第二个LivePCapDevice不起作用?

时间:2010-12-18 04:20:46

标签: c# sharppcap

我正在使用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.中工作。但我无法找出他们为什么在一个程序中发生冲突......   感谢〜

2 个答案:

答案 0 :(得分:1)

克隆SharpPcap来源并查看示例

我目前无法引用确切的示例,因为我离开了我的开发计算机,但我绝对肯定有一个如何添加其他LivePcapDevice实例的示例。

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

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

答案 1 :(得分:0)

Nameproject:MultipleFiltersOnDevice。

代码如下:

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

对我有用。