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();
    }
}

プログラムに addrdector の 2 つのインスタンスがある場合、最初のインスタンスには正しい出力がありますが、2 番目のインスタンスには出力がありません。2番目はパケットをキャプチャできないようです。
同じメイン関数で LivePCapDevice の 2 つのインスタンスをテストしましたが、正しく動作します。また、2 つの EXE.s で動作することもできます。しかし、プログラムで競合する理由がわかりません...ありがとう〜

4

2 に答える 2

1

SharpPcap ソースのクローンを作成し、例を見てください

私は開発用コンピューターから離れているため、現時点では正確な例を参照することはできませんが、追加の LivePcapDevice インスタンスを追加する方法の例があることは間違いありません。

不可能ではありませんが、解決策は直感的ではありません。使用する例は、「CaptureMultipleFilters」に沿ったものと呼ばれていると思います。

頑張ってください。できるだけ早く、より良いデータでこの回答を更新します。

于 2011-02-19T14:03:14.880 に答える