Как создать исходящее TCP-соединение через указанный сетевой интерфейс?
Есть ли способ реализовать в программе на C следующую функцию: необходимо устанавливать исходящие TCP-соединения через указанный сетевой интерфейс? как пример:
eth0 - 172.16.0.1 eth1 - 192.168.1.1
В некоторых случаях мне нужно установить исходящие соединения с адреса источника 172.16.0.1, а при некоторых других обстоятельствах из 192.168.1.1.
Это возможно? Это может быть достигнуто с помощью подпрограммы bind()?
ТИА.
0 ответов
Используйте параметр командной строки, чтобы назначить локальный адрес следующим образом
struct sockaddr_in localaddr;
localaddr.sin_family = AF_INET;
localaddr.sin_addr.s_addr = inet_addr ("172.16.0.1");
localaddr.sin_port = 0; // Любой локальный порт подойдет
bind(sockfd, (struct sockaddr *) и localaddr, sizeof(localaddr));
И когда вы хотите использовать другой IP, тогда используйте его вместо 172.16.0.1