我使用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文件的程序实例,但我真的很想处理一个程序中的所有文件。有任何想法吗?
您* *检查'新SharpPcap.LibPcap.CaptureFileReaderDevice(文件名)是否'成功了,对不对?不要以为它成功了。 –
是的。我在catch块里有东西。我只是想简化代码。无论如何,我已经解决了我的问题。不幸的是,我不能添加我自己的答案约5个小时。 (这与问题无关,而是我的pcap文件有问题) – Murph
因此,由于打开失败以及异常处理程序未退出而导致崩溃(以便它试图从未打开的CaptureFileReaderDevice中读取) ,在这种情况下,代码是错误的,或者是由于SharpPcap发生了一个错误(在这种情况下,您应该向开发人员报告),或者是由于libpcap(SharpPcap推测使用的)而导致的错误(其中你应该[向其开发者报告](https://github.com/the-tcpdump-group/libpcap/issues/new))? –