2014-06-24 25 views
0

我使用Sharppcap包装为WinPcap的,我试图读取多个PCAP文件,连续,在程序/程序生命周期阅读从多个PcapFiles在节目

foreach (FILENAME in LIST) // pseudocode 
{ 
    ICaptureDevice device; 

    try 
    { 

     device = new SharpPcap.LibPcap.CaptureFileReaderDevice(FILENAME); 
     device.Open(); 
    } 
    catch (Exception e){} 

    while ((device.GetNextPacket()) != null) 
    { 
     // Handle Packet from FILENAME 
    } 

    device.Close() 


} 

它穿越的一个实例的一个实例第一个文件是正确的,但只要它尝试解析第二个文件,它就会抛出一个AccessViolationException异常。

我知道我可以有一个pcap文件的程序实例,但我真的很想处理一个程序中的所有文件。有任何想法吗?

+0

您* *检查'新SharpPcap.LibPcap.CaptureFileReaderDevice(文件名)是否'成功了,对不对?不要以为它成功了。 –

+0

是的。我在catch块里有东西。我只是想简化代码。无论如何,我已经解决了我的问题。不幸的是,我不能添加我自己的答案约5个小时。 (这与问题无关,而是我的pcap文件有问题) – Murph

+0

因此,由于打开失败以及异常处理程序未退出而导致崩溃(以便它试图从未打开的CaptureFileReaderDevice中读取) ,在这种情况下,代码是错误的,或者是由于SharpPcap发生了一个错误(在这种情况下,您应该向开发人员报告),或者是由于libpcap(SharpPcap推测使用的)而导致的错误(其中你应该[向其开发者报告](https://github.com/the-tcpdump-group/libpcap/issues/new))? –

回答