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