是否可以选择特定的网络接口在Python中传输数据? 而且我在Linux上。我试图通过我的活动接口传输数据(首先是eth0,然后是wlan0等...)。感谢。
答案 0 :(得分:5)
如果我们正在讨论tcp / udp,那么(就像在任何其他语言中一样)套接字接口允许您将特定的IP地址绑定到它,所以你通过绑定接口的地址来做到这一点
人们误以为绑定仅用于侦听套接字,但对于连接也是如此,只是在正常使用中为您选择绑定。 试试这个:
import socket
s = socket.socket()
s.bind(('192.168.1.111', 0))
s.connect(('www.google.com', 80))
这里我们使用来自接口eth0(我的是192.168.1.111)的ip与系统选择的源端口连接到谷歌的网络服务器。 (如果需要,也可以通过替换0来选择源端口)
编辑: 要获取用于特定接口的IP地址,您可以使用此配方(仅限Linux) - http://code.activestate.com/recipes/439094-get-the-ip-address-associated-with-a-network-inter/
(如果你在同一个界面上有多个IP,我不确定它是否会起作用。我认为它会返回其中一个)
答案 1 :(得分:0)
我需要在linux上的ruby中执行此操作并写回答here我认为您会发现有用。正如itai指出的那样,你需要绑定到网络接口的IP地址,但在linux机器上,你还需要基于源的路由规则。查看我的答案以获取更多信息。