首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pcap和WinPcap有多相似?

Pcap和WinPcap有多相似?
EN

Stack Overflow用户
提问于 2015-07-22 18:35:20
回答 1查看 3K关注 0票数 4

我试着做跨平台开发,windows 7主机,QNX中微子目标。在尝试跨平台开发之前,我想在我的主机上测试和使用代码,但是在Windows上不支持Pcap。

Pcap和WinPcap之间的语法/函数调用有多相似?我可以使用我为WinPcap编写的代码并让它在Pcap和另一台机器上工作吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-22 19:02:23

(您可能指的是“”;"pcap“指的是”“,或者指它们都使用的文件格式。)

WinPcap是的一个端口,并且共享了很多libpcap的代码。它包括:

  • pcap-win32.c文件,其中包含“适配层”,以支持Windows上与平台无关的API(正如使用BPF的平台有pcap-bpf.c,Linux有pcap-linux.c等);
  • 与平台无关的共享代码;
  • 调用pcap-win32.c的Packet.dll库和Packet.dll通信的驱动程序;
  • 一些附加的例程。

因此,libpcap和WinPcap中的绝大多数调用是相同的,并且libpcap和WinPcap之间的代码共享量与和libpcap相同。

API的区别是:

  • libpcap没有pcap_open(),也没有远程捕获支持(在未来,将有用于远程捕获支持的通用API,因此可以编写代码在Windows和各种UN*Xes上进行远程捕获);
  • libpcap没有pcap_setbuff(),但是较新的版本允许您在使用pcap_create()pcap_activate()打开实时捕获时设置捕获缓冲区大小,而且这些例程也在较新的WinPcap版本中;
  • 如果您想使用平台的“等待一组输入源上可用的输入”机制,这些机制不仅具有不同的API (select()/poll()WaitForMultipleObjects()),而且获得等待处理的API必然是不同的;
  • libpcap没有“统计模式”、抽样或“直接转储到内核中的文件”(需要内核模式的支持;在Windows上,WinPcap必须包括一个驱动程序,因此可以提供驱动,但是在UN*Xes上,libpcap取决于操作系统提供了什么);
  • libpcap不支持任意调优“内核缓冲区中导致从应用程序读取数据返回的最小数据量”,尽管较新的版本支持“立即模式”,即数据包一到达就被传送;
  • libpcap中的一些较新的API尚未出现在WinPcap中(由于MSVC支持库的不同版本不相互兼容,有些API(如pcap_fopen_offline() )可能永远不会出现)。

因此,为了几乎所有的目的,应该有可能编写基于purposes的代码,这些代码可以在各种UN*Xes (显然还有QNX中微子)和Windows上工作,只要您处理这些平台之间的其他差异。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31571328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档