2014-06-24 23 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))? –

回答