use*_*326 5 python ubuntu networking virtualbox broadcast
我有一个Ubuntu虚拟机侦听由主机生成的UDP广播数据包.如果我使用python的socket.bind方法绑定到我的任何一个网络接口eth1或lo(本地环回),我就不会收到任何数据包.但是,如果我使用''(所有接口的符号)进行绑定,那么一切都很好.我希望有可能只绑定eth1的地址,但似乎并非如此.有人可以解释为什么需要'?是否有一些时髦的事情,因为我正在使用虚拟机?我正在使用桥接网络设置,因此虚拟机看起来像我的LAN上的另一台机器.这是代码:
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
# using the '' address works
sock.bind(('', UDP_PORT))
# using the address of eth1 doesn't
#sock.bind(('192.168.2.123', UDP_PORT))
# and neither does using the local loopback
#sock.bind(('127.0.0.1', UDP_PORT))
while True:
data, addr = sock.recv(2048)
print data
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3020 次 |
| 最近记录: |