13

我只想监听一个网络设备,捕获数据包并将数据包写入一个虚拟文件。另外我需要在收听时过滤数据包,所以我只写通过过滤器的数据包。我需要在.net c# 上做这些。这些是我的要求。那么我应该使用哪一个?高传输率和最小丢包率真的很重要。谢谢阅读。

4

2 回答 2

16

作为 SharpPcap 的作者,我可以说您将能够使用该库执行所有这些操作。性能是一个关键的设计目标。

Packet.Net 有一系列可以解析的数据包,并且是与 SharpPcap 捆绑在一起的用于数据包分解和生成的库。它的架构在任何可能的地方进行惰性评估,以便尽可能快。

性能很棘手,尤其是因为网络数据包捕获通常是操作系统的优先级较低的任务。您的应用程序处理数据包的速度越快,可以处理的数据包越多而不会丢失。我已经能够捕获 3MB/s 的数据包而没有任何丢包。我没有以更高的数据速率尝试过它,也没有编写过广泛的测试来生成和捕获数据以评估性能。测试和真实世界的结果是欢迎添加到文档和网站的数据点。

于 2011-08-19T18:54:13.333 回答
9

Pcap.Net 中提供了全部功能。

Pcap.Net 使用 C++/CLI 封装 WinPcap,这被认为比 PInvoke 更高效。

Pcap.Net 中的包库很大,可以解析和创建复杂的包。这包括递归层,例如 IP over IP。每一层的解析都是懒惰的,只有在你需要的时候才完成。

出于您的需要,我只看到使用 Pcap.Net 而不是 SharpPcap 的好处。

于 2011-10-08T10:44:57.413 回答