2009-08-23 4 views

ответ

2

Нельзя. используйте write(), используйте sendto().

Если вы используете PF_PACKET, SOCK_DGRAM, то он создает для вас заголовки канального уровня, что обычно является тем, что вы хотите. Вам все равно нужно строить любой более высокий протокол, который вы используете сверху.

Укажите параметр sockaddr_ll в параметре назначения. Вы можете указать одноадресный адрес канального уровня, многоадресный адрес или широковещательный адрес.

+0

Неважно, какой хост я указываю с sendto(), если заголовок IP содержит пункт назначения – computergeek6

+0

Да абсолютно; если вы отправляете IP-пакет, вам все равно нужно отправить его на соответствующий адрес уровня ссылки, если вы используете PF_PACKET, SOCK_DGRA. Если вы хотите отправлять необработанные IP-пакеты, я рекомендую вместо этого использовать PF_INET, SOCK_RAW. – MarkR

+0

Если я использую PF_INET, SOCK_RAW, мне придется привязать сокет? – computergeek6

Смежные вопросы