На целевой машине, на которой запущено приложение python, будут доступны три сетевых интерфейса. В целом все три сети будут сильно различаться, однако существует вероятность, что две из трех могут быть в одинаковых сетях.
В приведенном ниже примере у меня нет контроля над адресом назначения на ETH 2 (поскольку это предварительно сконфигурированная система), поэтому я вынужден был выбрать, какой адаптер использовать программно.
Я вполне уверен, что это будет зависеть от того, как ОС работает с маршрутизацией соединений. Я надеюсь, что будет найден независимый от платформы способ решения проблемы с использованием Python, поскольку существует вероятность того, что это приложение должно будет работать как на Windows 7, так и на компьютере с Linux.
Пример кода
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('192.168.0.2', 8000)) # Which device will this connect to??
Нормальный регистр
- ETH 0 Источник: 192.168.0.1
- ETH 0 Пункт назначения: 192.168.0.2
- ETH 1 Источник: 10.20.30.1
- ETH 1 Пункт назначения: 10.20.30.2
- ETH 2 Источник: 60.50.40.1
- ETH 2 Пункт назначения: 60.50.40.1
Возможные проблемы
- ETH 0 Источник: 192.168.0.1
- ETH 0 Пункт назначения: 192.168.0.2
- ETH 1 Источник: 10.20.30.1
- ETH 1 Пункт назначения: 10.20.30.2
- ETH 2 Источник: 192.168.0.3
- ETH 2 Пункт назначения: 192.168.0.2
Дополнительная информация
Все адаптеры ETH0,1 и 2 подключены к разным физическим сетям