Второй LivePCapDevice в SharpPCap не работает?
Я использую lib SharpPCap для захвата пакетов, а затем анализирую их, чтобы найти видео адрес flv в функции PacketArrivalEventHandler. Основная часть класса выглядит так:
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 ответа
Клонируйте исходный код SharpPcap и посмотрите на примеры
Я не могу сослаться на точный пример в данный момент, потому что я далеко от своего компьютера разработки, но я абсолютно уверен, что есть пример того, как добавить дополнительные экземпляры LivePcapDevice.
Это не невозможно, но решение не интуитивно понятно. Я думаю, что пример, который использует это, называется что-то вроде "CaptureMultipleFilters".
Удачи, и я обновлю этот ответ с лучшими данными, как только смогу.
Nameproject: MultipleFiltersOnDevice.
И код следующий:
var device1 = CaptureDeviceList.Instance[i];
var device2 = CaptureDeviceList.New()[i]; // NOTE: the call to New()
Меня устраивает.