Windows Pcap和WinPcap有多相似?
我正在尝试跨平台开发,Windows7主机,QNX中微子目标。在尝试进行跨平台开发之前,我想在主机上测试和使用代码,但Windows不支持Pcap Pcap和WinPcap之间的语法/函数调用有多相似?我能把我为WinPcap编写的代码用于Pcap和另一台机器吗?(你大概是指“libpcap和WinPcap”;“Pcap”指的是“libpcap和WinPcap”或它们都使用的文件格式。) WinPcap是libpcap到Windows的一个端口,它共享很多libpcap的代码。它包括:Windows Pcap和WinPcap有多相似?,windows,cross-platform,libpcap,winpcap,qnx-neutrino,Windows,Cross Platform,Libpcap,Winpcap,Qnx Neutrino,我正在尝试跨平台开发,Windows7主机,QNX中微子目标。在尝试进行跨平台开发之前,我想在主机上测试和使用代码,但Windows不支持Pcap Pcap和WinPcap之间的语法/函数调用有多相似?我能把我为WinPcap编写的代码用于Pcap和另一台机器吗?(你大概是指“libpcap和WinPcap”;“Pcap”指的是“libpcap和WinPcap”或它们都使用的文件格式。) WinPcap是libpcap到Windows的一个端口,它共享很多libpcap的代码。它包括: 一个p
- 一个pcap-win32.c文件,其中包含“适配层”,以支持Windows上与平台无关的API(正如使用bpf的平台有pcap bpf.c,linux有pcap linux.c等)李>
- 共享平台无关代码李>
- pcap-win32.c调用的Packet.dll库以及Packet.dll与之通信的驱动程序李>
- 一些附加的例程
- libpcap没有
,也没有远程捕获支持(将来,将有用于远程捕获支持的通用API,因此可以编写代码在Windows和各种UN*XE上进行远程捕获)李>pcap_open()
- libpcap没有
,但较新版本允许您在使用pcap\u setbuff()
和pcap\u create()
打开实时捕获时设置捕获缓冲区大小,这些例程也在较新版本的WinPcap中李>pcap\u activate()
- 如果您想使用平台的“等待一组输入源上的可用输入”机制,那么这些机制不仅具有不同的API(
/select()
与poll()
),而且获得等待句柄的API也必然不同李>WaitForMultipleObjects()
- libpcap没有“统计模式”、采样或“直接转储到内核中的文件”(这些需要内核模式支持;在Windows上,WinPcap必须包含一个驱动程序,因此可以提供该驱动程序,但在UN*Xes上,libpcap取决于操作系统提供的驱动程序)李>
- libpcap不支持任意调整“内核缓冲区中导致从应用程序读取的数据返回的最小数据量”,尽管较新版本支持“即时模式”,即数据包一到达就发送李>
- libpcap中的一些较新API还不在WinPcap中(有些API,例如
,可能永远不会在WinPcap中,因为MSVC支持库的不同版本彼此之间不兼容二进制文件)pcap\u fopen\u offline()