The target machine running the python application will have three network interfaces available to it. In general all three networks will be vastly different, however there is a possibility that two of the three could be on similar networks.
In the example below I do not have control over the destination address on ETH 2 (as it a pre-configured system), so I forced into selecting what adapter to use programmaticly.
I am fairly sure that this will fall on how the OS works with routing the connections. My hope is that there will be a platform independent way to solve the issue using python, because there is a possibility that this application will need to run on Windows 7 as well as a Linux machine.
Example Code
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('192.168.0.2', 8000)) # Which device will this connect to??
Normal Case
- ETH 0 Source: 192.168.0.1
- ETH 0 Destination: 192.168.0.2
- ETH 1 Source: 10.20.30.1
- ETH 1 Destination: 10.20.30.2
- ETH 2 Source: 60.50.40.1
- ETH 2 Destination: 60.50.40.1
Possible Trouble Case
- ETH 0 Source: 192.168.0.1
- ETH 0 Destination: 192.168.0.2
- ETH 1 Source: 10.20.30.1
- ETH 1 Destination: 10.20.30.2
- ETH 2 Source: 192.168.0.3
- ETH 2 Destination: 192.168.0.2
Additional Information
Adapters ETH0,1,and 2 are all connected to different physical netoworks