0

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

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

提前谢谢。

4

1 回答 1

1

我想问的是我正在使用诸如 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 之间移植,或者,如果您必须使用特定于平台的功能,请确保仅在该平台上使用适用于特定平台的功能。

于 2013-11-30T19:25:16.660 回答