C++ 使用pcap开发便携式网络分析仪应用程序

C++ 使用pcap开发便携式网络分析仪应用程序,c++,winpcap,portable-applications,C++,Winpcap,Portable Applications,在使用vc++2008开发网络分析器应用程序时,我遇到了可移植性问题 我正在开发一个使用winpcap分析数据包的应用程序。然而,最近我被要求我的应用程序也应该在solaris和linux上运行。。我想问的是,我正在使用诸如PacketOpenAdapter之类的winpcap函数来嗅探适配器。。我是否必须从头重写所有捕获代码,使其在windows以外的操作系统上工作?我应该只使用pcap.h来使我的应用程序可移植吗?我需要使用libpcap吗?简言之,我应该怎么做才能使它便于携带 thx提前

在使用vc++2008开发网络分析器应用程序时,我遇到了可移植性问题

我正在开发一个使用winpcap分析数据包的应用程序。然而,最近我被要求我的应用程序也应该在solaris和linux上运行。。我想问的是,我正在使用诸如PacketOpenAdapter之类的winpcap函数来嗅探适配器。。我是否必须从头重写所有捕获代码,使其在windows以外的操作系统上工作?我应该只使用pcap.h来使我的应用程序可移植吗?我需要使用libpcap吗?简言之,我应该怎么做才能使它便于携带

thx提前

我想问的是,我正在使用诸如PacketOpenAdapter之类的winpcap函数来嗅探适配器。。我是否必须从头重写所有捕获代码,使其在windows以外的操作系统上工作

您只需要使用
wpcap.dll
中的函数;您不得使用任何
packet.dll
函数,除非您不需要使用它们,并且如果不使用它们,程序仍能工作,在这种情况下,只能在Windows上使用它们

此外,不要使用仅在Windows上可用的
wpcap.dll
函数,例如
pcap_open()
;仅使用
pcap\u open\u live()
打开要捕获的设备,并仅使用
pcap\u open\u offline()
打开保存的捕获文件

我应该只使用pcap.h来使我的应用程序可移植吗

我需要使用libpcap吗

在UN*X(Solaris、Linux、OS X、*BSD、HP-UX、AIX等)上使用libpcap,在Windows上使用WinPcap(它是移植到Windows的libpcap),并且只使用在UN*X上使用的libpcap版本和在Windows上使用的WinPcap版本中可用的函数


然后确保您使用的所有其他功能都可以在UN*X和Windows之间移植,或者,如果您必须使用特定于平台的功能,请确保仅在该平台上使用适用于特定平台的功能。

使用跨平台库(如libpcap)是一个良好的开端。thx。。因此,如果我使用我想要的libpcap,那么相同的代码不会在知名的操作系统上工作吗?当我在另一个问题的答案中读到“libpcap/WinPcap是一个跨平台库,最初是为BSD UN*X创建的”时,我感到困惑。。这是真的吗?那么为什么Packet32.c包含了?