У меня проблемы с переносимостью при разработке приложения сетевого анализатора с использованием vc++ 2008.
Я разрабатываю приложение, которое анализирует пакеты с помощью winpcap. Тем не менее, в последнее время мне требовалось, чтобы мое приложение также запускалось на Solaris и linux.. что я хочу спросить, что я использую функции winpcap, такие как PacketOpenAdapter, чтобы обнюхать адаптер. Нужно ли мне переписывать весь код захвата от начала, чтобы он работал на операционных системах, отличных от окон? должен ли я использовать pcap.h для переноса моего приложения? мне нужно использовать libpcap? Короче говоря, что я должен сделать, чтобы сделать его переносным?
спасибо заранее.
что я хочу спросить, что я использую функции winpcap, такие как PacketOpenAdapter, чтобы обнюхать адаптер. Должен ли я переписать весь код захвата с самого начала, чтобы он работал на операционных системах, отличных от окон?
Вам нужно использовать только функции, которые находятся в wpcap.dll
; вы не должны использовать какие- packet.dll
функции packet.dll
, если вам не нужно их использовать, и программа будет работать, если вы их не используете, и в этом случае используйте их только в Windows.
Кроме того, не используйте функции wpcap.dll
, доступные только в Windows, такие как pcap_open()
; используйте только pcap_open_live()
чтобы открыть устройство для захвата и использования только pcap_open_offline()
чтобы открыть сохраненные файлы захвата.
должен ли я использовать pcap.h для переноса моего приложения?
Да.
мне нужно использовать libpcap?
Используйте libpcap для UN * X (Solaris, Linux, OS X, * BSD, HP-UX, AIX и т.д.), Используйте WinPcap (который является libpcap, перенесенный в Windows) в Windows, и используйте только функции, доступные в версиях libpcap, который вы будете использовать на UN * X и в версии WinPcap, которую вы используете в Windows.
Затем убедитесь, что все остальное, что вы используете, переносимо между UN * X и Windows или, если вам нужно использовать определенные для платформы функции, убедитесь, что вы используете те, которые подходят для конкретной платформы только на этой платформе.