Как создать исходящее 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

Другие вопросы по тегам