У меня проблемы с переносимостью при разработке приложения сетевого анализатора с использованием vc ++ 2008.
Я разрабатываю приложение, которое анализирует пакеты с помощью winpcap. Однако недавно мне потребовалось, чтобы мое приложение также работало на солярисе и linux … что я хочу спросить, я использую функции winpcap, такие как PacketOpenAdapter, для прослушивания адаптера … нужно ли переписывать весь код захвата с самого начала, чтобы заставить его работать на операционных системах, отличных от Windows? использовать только pcap.h для переносимости моего приложения? мне нужно использовать libpcap? Короче говоря, что я должен сделать, чтобы сделать его портативным?
спасибо заранее.
то, что я хочу спросить, что я использую функции winpcap, такие как PacketOpenAdapter, чтобы прослушивать адаптер. Должен ли я переписывать весь код захвата с самого начала, чтобы он работал в операционных системах, отличных от Windows?
Вам нужно использовать только функции, которые находятся в wpcap.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, либо, если вы иметь чтобы использовать специфичные для платформы функции, убедитесь, что вы используете те, которые подходят для конкретной платформы только на этой платформе.
Других решений пока нет …