【发布时间】:2015-01-30 00:05:06
【问题描述】:
是否可以将套接字绑定到特定的虚拟适配器? 以下 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] No such device”。
我的虚拟适配器似乎工作正常,并且可以 ping 通。
基本上,我要做的是从特定 ip(分配给虚拟适配器)生成传出流量。目的是使用单台计算机对网络上的嵌入式设备进行加载/泛洪测试。
【问题讨论】:
-
您说您在绑定时遇到错误,绑定代码在哪里?通常您使用不需要接口名称或索引的 IP 地址和端口号的主机进行绑定,例如
s.bind('10.10.10.10', 3003) -
@cmidi,我的问题是传出连接,不接受传入。设置套接字选项时抛出错误。希望这更清楚: 's = socket.socket(socket.AF_INET, socket.SOCK_STREAM)' 's.setsockopt(socket.SOL_SOCKET, 25, adapter)' 's.connect((ADDRESS, PORT))' 's .send(msg)'