我只想监听网络设备,捕获数据包并将数据包写入虚拟文件。此外,我需要在监听时过滤数据包,只能写入通过过滤器的数据包。我需要在.net c#上做这些。这些是我的要求。那么我应该使用哪一个?高传输速率和最小数据包丢失非常重要。 谢谢你的阅读。
答案 0 :(得分:11)
作为SharpPcap的作者,我可以说你将能够使用库执行所有这些操作。性能是一个关键的设计目标。
Packet.Net有一系列可以解析的数据包,它是与SharpPcap捆绑在一起的数据库,用于数据包解析和生成。它的架构尽可能快地进行惰性评估。
性能很棘手,尤其是因为网络数据包捕获通常是操作系统的低优先级任务。应用程序处理数据包的速度越快,处理的数据包就越多而不会丢失。我已经能够捕获3MB / s的数据包,没有任何丢弃。我没有尝试过更高的数据速率或编写大量的测试来生成和捕获数据以评估性能。测试和现实世界的结果是欢迎的数据点,可以添加到文档和网站中。
答案 1 :(得分:8)
Pcap.Net中提供了整个功能。
Pcap.Net使用C ++ / CLI来包装WinPcap,它被认为比PInvoke更有效。
Pcap.Net中的数据包库非常庞大,可以解析和创建复杂的数据包。这包括IP over IP等递归层。每层的解析都是懒洋洋地完成的,只有在你需要的时候才能完成。
根据您的需求,我认为只使用Pcap.Net而不是SharpPcap。