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



在使用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_open_live()打开要在其上捕获的设备,仅使用pcap_open_offline()打开保存的捕获文件。

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

是的。

我需要使用libpcap吗?

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

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

最新更新