【发布时间】:2011-10-02 19:20:53
【问题描述】:
我只想监听一个网络设备,捕获数据包并将数据包写入一个虚拟文件。我还需要在收听时过滤数据包,所以我只写通过过滤器的数据包。我需要在.net c# 上做这些。这些是我的要求。那么我应该使用哪一个?高传输率和最小丢包率真的很重要。 感谢阅读。
【问题讨论】:
-
关于那个问题没有与性能相关的答案。
标签: c# .net winpcap sharppcap pcap.net
我只想监听一个网络设备,捕获数据包并将数据包写入一个虚拟文件。我还需要在收听时过滤数据包,所以我只写通过过滤器的数据包。我需要在.net c# 上做这些。这些是我的要求。那么我应该使用哪一个?高传输率和最小丢包率真的很重要。 感谢阅读。
【问题讨论】:
标签: c# .net winpcap sharppcap pcap.net
Pcap.Net 中提供了全部功能。
Pcap.Net 使用 C++/CLI 封装 WinPcap,这被认为比 PInvoke 更高效。
Pcap.Net 中的包库很大,可以解析和创建复杂的包。这包括递归层,例如 IP over IP。每一层的解析都是懒惰的,只有在你需要的时候才完成。
根据您的需要,我只看到使用 Pcap.Net 优于 SharpPcap 的好处。
【讨论】:
作为 SharpPcap 的作者,我可以说您将能够使用该库执行所有这些操作。性能是一个关键的设计目标。
Packet.Net 有一系列可以解析的数据包,并且是与 SharpPcap 捆绑在一起的用于数据包分解和生成的库。它的架构会在任何可能的地方进行惰性评估,以便尽可能快。
性能很棘手,特别是因为网络数据包捕获通常是操作系统的优先级较低的任务。您的应用程序处理数据包的速度越快,可以处理的数据包越多而不会丢失。我已经能够捕获 3MB/s 的数据包而没有任何丢包。我没有以更高的数据速率尝试过它,也没有编写过广泛的测试来生成和捕获数据以评估性能。测试和真实世界的结果是欢迎添加到文档和网站的数据点。
【讨论】: