Необработанные кадры Ethernet с использованием Winsock - PullRequest
6 голосов
/ 20 апреля 2009

Я портирую коммуникационную библиотеку с Linux на Windows. Я знаю, что мой подход по большей части. Библиотека использует все необработанные кадры уровня Ethernet для всех коммуникаций.

Библиотека, из которой я портирую, использует семейство PF_PACKET и структуру sockaddr_ll. После просмотра сайта MSDN winsock я не нашел эквивалентного семейства / структуры. Каким должен быть мой подход?

У меня есть несколько идей, но я не уверен, что это хорошие идеи. Я мог бы использовать PF_UNSPEC, для неопределенных. Я мог бы просто передать число, которое представляет PF_PACKET (это короткий без знака) Я также мог бы просто сделать свою собственную структуру sockadddr_ll в Windows.

Ни одна из этих идей не кажется мне хорошей, они просто кажутся взломами, которые вряд ли сработают.

Если у кого-то есть предложения, я был бы признателен.

1 Ответ

3 голосов
/ 20 апреля 2009

Я предполагаю, что вы имеете в виду Raw Sockets (где вы должны записать сетевой уровень, транспортный уровень и информацию прикладного уровня). Новые версии Windows (XP SP2 и выше) имеют очень ограниченную поддержку необработанных сокетов со многими ограничениями.

Дополнительная информация (прокрутите вниз до "Ограничения для необработанных сокетов")

Решение, я полагаю, заключается в использовании WinPcap , который позволяет отправлять необработанные пакеты в эти системы.

...