![]() |
Модераторы: feodorv |
![]() ![]() ![]() |
|
konshyn |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 19.9.2013 Репутация: нет Всего: нет |
а какая разница - IPPROTO_RAW или ETH_P_ALL. числа-то ведь ненулевые, как в случае с IPPROTO_IP. Спасибо) Добавлено через 1 минуту и 6 секунд а какая разница - IPPROTO_RAW или ETH_P_ALL. числа-то ведь ненулевые, как в случае с IPPROTO_IP. Спасибо) Добавлено через 8 минут и 5 секунд
Не совсем так. Тут был другой вопрос: что происходит при фрагментации пакета маршрутизатором при получении этого пакета ОС. Просто когда начал уже переделывать проект под IP-сокет, а не eth-кадры, то возникли проблемы, решил новую тему не создавать, а уже задать вопрос здесь. Добавлено через 12 минут и 2 секунды определить индекс не проблема функция ioctl или есть еще структура
и функция похожая(не помню точное название), которая при вызове требует эту структуру. оно создает список всех имен интерфейсов и их индексов. Добавлено через 14 минут и 27 секунд кажется, я не доразобрался со структурами для сокетов. спасибо)) но проблема остается. не могу получать пакеты, висит на функции recvfrom... -------------------- «Потому что ценность акта действия в этой стране возрастает в несколько раз». |
||||
|
|||||
konshyn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 19.9.2013 Репутация: нет Всего: нет |
Да, оттуда. Есть статья, которой видимо многие пользовались. Но там, как и я, человек создавал сырой сокет для канального уровня (ethernet). А сейчас я пытаюсь сделать сырой сокет для IP. -------------------- «Потому что ценность акта действия в этой стране возрастает в несколько раз». |
|||
|
||||
feodorv |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
рука-лицо.жереге ![]() Ну вот представьте себе, что просто IPPROTO_RAW и не просто htons(ETH_P_ALL). Вообще все ETH_* константы требуют htons, а IPPROTO_* - нет. Посмотрел про IPPROTO_RAW в Линуксе:
Вот так. Хотя народ пишет, что и связка AF_PACKET/SOCK_RAW/IPPROTO_RAW работает... При этом
Добавлено через 6 минут и 28 секунд Я понимаю, что это возможно, но речь шла о байнде сырого сокета на конкретный IP адрес конкретного интерфейса, а вот в этом я уже сомневаюсь... -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||||
|
|||||||
Олег2005 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 421 Регистрация: 26.5.2005 Где: Рига Латвия Репутация: 6 Всего: 11 |
||||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
Да я и не сомневался)))) Почему сразу и спросил, какой сокет имеется в виду - AF_PACKET или AF_INET. -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
konshyn |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 19.9.2013 Репутация: нет Всего: нет |
Вот этого я не знал. Теперь знаю. Извиняюсь за повтор(как писал уже feodorv ), Но вот по ссылке. Пишут сначала:
потом:
P.S. Это действительно . Столько времени потратил на понимание, почему не считывает при создании с IPPROTO_RAW, а пишут, что принимает... Пока писал верхнюю часть, понял, что под словомами "принимает все протоколы IP" имеется в виду изменение всех вложенных протоколов в ip-пакет, а не "принимать" = "считывать" из сети. Ладно, тут все понял. Сырой сокет чисто для IP-пакетов(всех IP-пакетов, а не отдельных - TCP, UDP и др.) я создать не смогу(для приема). Только пакетный. А пакетные сокеты не собирают пакет воедино, если он был где-то в пути фрагментирован. Правильно все понял? -------------------- «Потому что ценность акта действия в этой стране возрастает в несколько раз». |
||||||
|
|||||||
feodorv |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
Ну да. В Линуксе не получится. Сформулировано, конечно, не очень...
![]() -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||
|
|||||
konshyn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 19.9.2013 Репутация: нет Всего: нет |
feodorv, спасибо.
По-моему, во всех созданных мной темах выручаете:) Добавлено через 6 минут и 21 секунду И информация для тех, кто сюда заглянет. Если кто-то захочет привязать сокет к определенному устройству через опцию SO_BINDTODEVICE функцией setsockopt(), то привязывать можно только сокеты AF_INET. AF_PACKET придется привязывать через bind(). -------------------- «Потому что ценность акта действия в этой стране возрастает в несколько раз». |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
konshyn, не за что)))
Хорошо, что Вы написали, а то я как-то об этом забыл... -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |