Re: socket connect и проч
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 19.02.19 09:01
Оценка: 2 (1)
Здравствуйте, Pavel515, Вы писали:

P>Есть компьютер centos 7

P>несколько сетевых адаптеров
P> inet 172.18.2.66 netmask 255.255.255.0 broadcast 172.18.2.255
P> inet 192.168.71.240 netmask 255.255.255.224 broadcast 192.168.71.255
P> inet 10.1.24.30 netmask 255.255.255.0 broadcast 10.1.24.255

P>Есть ли возможность при вызове


P>socket(...)

P>connect(...)

P>управлять адресом источника? или ядро само определит этот адрес в зависимости от таблицы маршрутизации и лезть туда не надо?


Обычно само и обычно не надо.
Если надо — есть функция bind(), которую надо звать до connect(). Если connect() вызван, звать bind() уже поздно — он вызовется внутри connect().

Есть, правда, специализированные случаи, когда надо переопределять адрес в зависимости от ремоты — вот тут уже надо хитрую логику приворачивать. Это, например, если на интерфейсе 2 адреса из одной подсети, по умолчанию берётся первый, а нужно выходить со второго, но только если исход через этот интерфейс.
Тогда можно спрашивать выходной интерфейс через `ip route get` или его APIшный аналог.
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.