我正试图做跨平台开发,QNX Neutrino目标。 在尝试跨平台开发的工作之前,我想testing一下主机上的代码,但是Windows上不支持Pcap。
Pcap和WinPcap之间的语法/函数调用有多相似? 我可以把我写的WinPcap的代码,并为Pcap和一台不同的机器吗?
(推测你的意思是“libpcap和WinPcap”;“pcap”是指“libpcap和WinPcap”或者它们都使用的文件格式。)
WinPcap是一个libpcap到Windows的端口,并共享了很多libpcap的代码。 它包括:
因此,libpcap和WinPcap中的绝大多数调用是相同的 ,并且在libpcap和WinPcap之间共享的代码与在FreeBSD上的libpcap-on-Linux上的libpcap-on之间的代码相同。
API的差异是:
pcap_open()
,也没有远程捕获支持(将来会有通用的API用于远程捕获支持,因此可以编写代码在Windows和各种UN * Xes上进行远程捕获) ; pcap_setbuff()
,但如果使用pcap_create()
和pcap_activate()
打开一个实时捕获,那么新版本可以设置捕获缓冲区的大小,而这些例程也是在较新版本的WinPcap中; select()
/ poll()
和WaitForMultipleObjects()
),API的获得句柄要等待的是必然的; pcap_fopen_offline()
,可能永远不会)。 因此,几乎所有的目的,只要你处理平台之间的其他差异,就应该可以编写适用于各种UN * Xes(显然是QNX Neutrino)和Windows上的基于pcap的代码。