这可能听起来很愚蠢。请原谅我对这些东西的了解有限。
是否可以监听多个多播组,或者更确切地说,是一系列地址,例如, 224.128.*.*
?通常这些用CIDR网络掩码表示为/16
,例如。
目前我将我的套接字绑定到特定地址:
sock.bind((ip, port))
。但我需要使用一系列地址。
我非常确定这是不可能的。只是想确认一下。
由于
答案 0 :(得分:0)
有点可能。 E.g:
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(('', 2345))
for i in xrange(255):
print i
mreq = struct.pack("=4sl", socket.inet_aton("224.1.2.%d" % i),
socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
不幸的是,内核限制了一个套接字一次可以连接的组数:它是20.它也不是可调的(据我所知)。
编辑:事实上,它可以通过/proc/sys/net/ipv4/igmp_max_memberships
在Linux上进行调整。