是否可以选择特定的网络接口来传输Python中的数据?

mau*_*au5 3 python sockets networking

是否可以选择特定的网络接口来传输Python中的数据?我在Linux上.我正在尝试通过我的活动接口传输数据(首先是eth0,然后是wlan0等...).谢谢.

ita*_*tai 6

如果我们正在讨论tcp/udp,那么(就像在任何其他语言中一样)套接字接口允许您将特定的IP地址绑定到它,因此您可以通过绑定接口的地址来实现.

人们误以为绑定仅用于侦听套接字,但对于连接也是如此,并且只是在正常使用中为您选择绑定.试试这个:

import socket
s = socket.socket()
s.bind(('192.168.1.111', 0))
s.connect(('www.google.com', 80))
Run Code Online (Sandbox Code Playgroud)

在这里,我们使用来自接口eth0(我的是192.168.1.111)的ip与系统选择的源端口连接到谷歌的Web服务器.(如果需要,也可以通过替换0来选择源端口)

编辑:要获取用于特定接口的IP地址,您可以使用此配方(仅限Linux) - http://code.activestate.com/recipes/439094-get-the-ip-address-associated-with-一个网络系帧间/

(如果你在同一个界面上有多个IP,我不确定它是否会起作用.我认为它将返回其中一个)