Chciałbym połączyć się z serwerem za pomocą jednej z dwóch tras sieciowych. Jak to zrobić? Mam dość google, a powszechną odpowiedzią jest skrzypce z tablicą rutowania, ale to nie pomoże, ponieważ miejsce docelowe ma jeden adres IP. Większość przykładów zawiera klienta z jedną kartą sieciową i serwerem z wieloma kartami sieciowymi, ale w tym przypadku jest odwrotnie.Połączenie TCP/IP na określonym interfejsie
Aplikacja ForceBindIP wydaje się być w stanie zaoferować tego typu funkcje, więc myślę, że to musi być możliwe.
+----->-------+
192.168.1.3 | B | 192.168.1.4
+--------+ +--------+ +--------+
| Client | | Switch |-->---| Server |
+--------+ +--------+ +--------+
192.168.1.2 | A |
+----->-------+
Najprawdopodobniej będę używał C++ i winsock, aby to zrobić. Będę musiał mieć możliwość otwarcia połączenia na danej trasie dowolnie (tj. Nie może być statycznie związany z konkretną trasą). Będę używał zwykłego "TCP/IP.
EDIT: Windows 7 klient
Na linux można wykorzystać SO_BINDTODEVICE (jeśli masz dwa urządzenia) lub po prostu bind() przed podłączeniem odróżnić lokalnych adresów IP. – cdleonard
Dzięki, ale przy użyciu klienta Windows –
powiązanie systemu Windows ma tę samą funkcjonalność, użytkownik określa adres IP, który będzie powiązany z adresem: http://msdn.microsoft.com/en-us/library/windows/desktop/ms740496(v=vs. 85) .aspx – fileoffset