运行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 连接到不同的物理网络。