Python 将传出套接字绑定到特定(虚拟)适配器
是否可以将套接字绑定到特定的虚拟适配器? 以下Python代码适用于真正的适配器,例如eth0适用于电缆,wlan0适用于wifi:Python 将传出套接字绑定到特定(虚拟)适配器,python,linux,sockets,Python,Linux,Sockets,是否可以将套接字绑定到特定的虚拟适配器? 以下Python代码适用于真正的适配器,例如eth0适用于电缆,wlan0适用于wifi: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, 25, b"eth0") 但是,当我尝试将套接字绑定到虚拟适配器(例如eth0:0)时,会出现错误OSError:[Errno 19]没有这样的设备 我的虚拟适配器似乎工作正常,否则可以pin
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, 25, b"eth0")
但是,当我尝试将套接字绑定到虚拟适配器(例如eth0:0)时,会出现错误OSError:[Errno 19]没有这样的设备
我的虚拟适配器似乎工作正常,否则可以ping正常
基本上,我要做的是从分配给虚拟适配器的特定ip生成传出流量。其目的是使用一台计算机在网络上加载/全面测试嵌入式设备。您应该知道,对于内核,这些eth0和eth0:1是相同的接口eth0。 标签或“别名”,如eth0:1实际上,您可以使用一些更好的用户友好标签,如eth0:internal\u net仅用于系统管理员,而不用于应用程序
所以你应该依赖于源IP或者让内核自动选择它,根据路由表你说你在bind中出错了,bind代码在哪里?通常,您可以使用一台主机进行绑定,该主机的IP地址和端口号不需要接口名称或索引,例如s.bind'10.10.10',3003@cmidi,我的问题是传出连接,不接受传入连接。设置套接字选项时引发错误。希望这更清楚:“s=socket.socketsocket.AF_INET,socket.SOCK_STREAM”s.setsockoptsocket.SOL_socket,25,适配器“”s.connectADDRESS,端口“”s.sendmsg”