在使用vc ++ 2008开发网络分析器应用程序时,我遇到了可移植性问题。
我正在开发一个使用winpcap分析数据包的应用程序。但是,最近我被要求我的应用程序也应该在solaris和linux上运行..我想问我是否正在使用像PacketOpenAdapter这样的winpcap函数来嗅探适配器..我是否必须重写所有捕获代码从开始使它适用于Windows以外的操作系统?我应该只使用pcap.h使我的应用程序可移植吗?我需要使用libpcap吗?简而言之,我该怎么做才能让它变得便携?
提前thx。答案 0 :(得分:1)
我想问的是,我正在使用像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(libpcap移植到Windows),并仅使用可用的函数在libpcap的版本中,您将在UN * X和您在Windows上使用的WinPcap版本中使用。
然后确保您使用的所有 else 可以在UN * X和Windows之间移植,或者如果 使用特定于平台的功能,请确保使用仅适用于特定平台的平台。