我想问的是我正在使用诸如 PacketOpenAdapter 之类的 winpcap 函数来嗅探适配器。我是否必须从头开始重写所有捕获代码才能使其在 Windows 以外的操作系统上工作?
您只需要使用wpcap.dll
; 你不能使用任何 packet.dll
功能,除非你不需要使用它们,并且如果你不使用它们,程序仍然可以工作,在这种情况下,只能在 Windows 上使用它们。
此外,不要使用wpcap.dll
仅在 Windows 上可用的功能,例如pcap_open()
; 仅pcap_open_live()
用于打开要捕获的设备,仅pcap_open_offline()
用于打开保存的捕获文件。
我应该只使用 pcap.h 来使我的应用程序可移植吗?
是的。
我需要使用 libpcap 吗?
在 UN*X(Solaris、Linux、OS X、*BSD、HP-UX、AIX 等)上使用 libpcap,在 Windows 上使用 WinPcap(libpcap 移植到 Windows),并且仅使用版本中可用的功能您将在 UN*X 上使用的 libpcap 以及在 Windows 上使用的 WinPcap 版本。
然后确保您使用的所有其他东西都可以在 UN*X 和 Windows 之间移植,或者,如果您必须使用特定于平台的功能,请确保仅在该平台上使用适用于特定平台的功能。