![]() |
|
Модераторы: xvr |
![]()
|
|
| 11Space11 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 22.1.2010 Где: Минск Репутация: нет Всего: нет |
как правильно программировать 2 сетевые карты? на компе стоит 2 сетевухи, как можно отправить пакеты раздельно на eth0 и eth1(одни данные отправлять на eth0 другие на eth1)
.протокол UDP (тип сокета SOCK_DGRAM) сообщения мультикастовые. какую структуру sockaddr_xx использовать? в структуре sockaddr_in такого нет, нашёл в структуре sockaddr_ll индекс устройства(sll_ifindex), но оно неприемлемо, так как эта структура работает с RAW Socket и туда нужно записывать MAC адрес. в setsockopt тоже не нашёл, как привязать сокет к интерфейсу. пробовал ioctl SIOCSIFNAME - результата не дало |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
man 2 bind
в качестве sockaddr_in указывайте локальный ip адрес нужного интерфейса -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| 11Space11 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 22.1.2010 Где: Минск Репутация: нет Всего: нет |
спасибо, работает. Только как-то по IP не очень красиво, циркуляция сообщений происходит мультикастом, IP может и не стоять
возможно ли привязать сокет с указанием "eth0" или "eth1"? и ещё попутный вопрос, эта же программа должна получать сообщения по обоим интерфейсам, так вот по eth0 она принимает, а по второму(eth1 не принимает) настройка Сетевых карт: route add -net 224.0.0.0 netmask 224.0.0.0 dev eth0 route add -net 224.0.0.0 netmask 224.0.0.0 dev eth1 код
и приём
все настройки сетевых карт одинаковые, IP eth0 192.168.0.37 IP eth1 192.168.0.239 в поле mreq0.imr_interface.s_addr вставлял адреса он это понимает, та же ситуация c eth0 работает с eth1 - нет |
||||
|
|||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
попробуйте man 2 setsockopt + SO_BINDTODEVICE
попробуйте использовать imr_ifindex и сделать ADD_MEMBERSHIP для каждого ifindex -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| 11Space11 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 22.1.2010 Где: Минск Репутация: нет Всего: нет |
попробовал для ifindex обоих сетевух(2 и 3) - результат отрицательный. Сейчас я убрал чтение с eth0 оставил только с eth1 не читает именно потому, что через eth1. кажется, что сокет как-то остаётся привязан к eth0 , либо сетевухи настроены неодинаково, хотя ifconfig и route говорят, что всё одинаково. не понимаю, в чём может быть дело |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
11Space11, у тебя на сетевухах одинаковые IP что ли?
|
|||
|
||||
| 11Space11 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 22.1.2010 Где: Минск Репутация: нет Всего: нет |
IP eth0 192.168.0.37 IP eth1 192.168.0.239 одинаковые не IP, одинаковые группы. программа заработала, но не думаю, что вопрос решён до конца программа route выдавала
а если убрать одно правило для eth0 и оставить для eth1 всё работало, то есть это 1 правило фильтровало мои сообщения. Тогда возникает вопрос, почему из-за того, что мои сетевухи принадлежали одной группе(192.168.0.хх), 1 правило, которое предназначено для eth0 применялось для eth1. Ведь сокет я привязывал к eth1(и он к нему привязывался). кстати программа tspdump видела мои сообщения, но она написана на низком уровне то есть фильтрация должна проходить на уровне IP |
|||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |