Как программно задать через какую сетевую карту делать отправку пакетов

Имеется 2 порта Ethernet на материнской плате. К обоим портам подключена одна и та же локальная сеть — разные IP (192.168.0.101 и 192.168.0.102). Предполагается имитировать 2 физических устройства на одном ПК.

Задача в том, чтобы из программы на C++ часть инфы выдавалось через ...101 IP, а другая через ...102. Подскажите как это реализовать, куда смотреть? Если есть примерчик вообще замечательно.


Ответы (1 шт):

Автор решения: KoVadim

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

Так как не указана ось, то я скопипастил код с msdn, оно там плюс-минус одинаково.

service.sin_family = AF_INET; // очевидно
service.sin_addr.s_addr = inet_addr("192.168.0.101"); // адрес
service.sin_port = htons(27015); // если нужен и порт специальный
service.sin_port = 0; // оставить порт на откуп системы 
//----------------------
// а дальше по классике
iResult = bind(ListenSocket, (SOCKADDR *) &service, sizeof (service));
→ Ссылка