Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Программирование под Unix/Linux > 3 сетевых интерфейса |
Автор: konshyn 17.10.2013, 16:05 |
Доброго вечера всем. Такое дело.. У меня на компьютере установлено три сетевые карточки. Вопрос: когда я создаю сокет, как мне выбирать, через какой сетевой интерфейс отправлять данные? |
Автор: o2n3e 17.10.2013, 17:12 |
Модератор: Сообщение скрыто. |
Автор: Alexeis 17.10.2013, 17:16 |
Каждый сетевой адаптер имеет свой адрес. Насколько я помню, локальный трафик будет отправляться согласно IP адресу назначения. Сервер, очевидно, забиндится сразу на нужный адрес адаптера. Внешний трафик клиента пойдет согласно таблице маршутизации. Без специальных настроек таблицы маршрутизации винда направляет внешний трафик на адаптер, который установил интернет соединение последним. Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/3-сетевых-интерфейса-id525fe0baae20150705000000#findElement_E7045_525ff148ae2015307e0005a4_0 |
Автор: konshyn 18.10.2013, 10:33 | ||
Это понятно. Но нужна умышленная привязка, независимо от таблицы маршрутизации. Вы правильно поняли вопрос. Смысл именно в насильственной привязанности сокета к устройству. Это то, что нужно. Спасибо |
Автор: konshyn 18.10.2013, 10:55 |
У меня еще один вопрос. Я нашел, как еще с помощью функциюю ioctl привязывать к сетевой карте. так что лучше: setsockopt или ioctl?? UPD: Функция bind() нужна для привязки только прослушиваего сокета, я так понимаю? |
Автор: feodorv 18.10.2013, 12:52 | ||
Как? |
Автор: konshyn 18.10.2013, 13:11 |
Извиняюсь. Это совсем не то. Вопросов больше нет. Спасибо |
Автор: feodorv 18.10.2013, 13:50 | ||
Нет. Вообще говоря, для любого. bind() может устанавливать source IP address, может port, может и то, и другое. |
Автор: o2n3e 18.10.2013, 16:04 |
Модератор: Сообщение скрыто. |