接收UDP广播[VirtualBox,Ubuntu,Python]

我有一个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

解决方法

在网络编程中,空地址字符串表示所有已配置的接但是,如果指定了IP地址,则socket将仅侦听具有指定IP地址的接口.

相关文章

ubuntu退出redis的示例:指定配置文件方式启动源码redis:roo...
ubuntu中mysql改密码忘了的解决方法:1.在终端中切换到root权...
ubuntu安装mysql失败的解决方法原因:可能是原有的MySQL还有...
使用centos和ubuntu建站的区别有以下几点1.CentOS是Linux发行...
ubuntu图形界面和字符界面切换的方法:可以通过快捷键CTRL+A...
ubuntu中重启mysql失败的解决方法1.首先,在ubuntu命令行中,...