gpt4 book ai didi

python - 监听多个网络上的多播流量

转载 作者:太空宇宙 更新时间:2023-11-04 10:50:36 24 4
gpt4 key购买 nike

我目前有以下接收多播数据的代码。

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(('', 24003))
mreq = struct.pack("=4sl", socket.inet_aton("238.210.10.1"), socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)

我有两个网卡,但代码只监听发送到 127.0.0.1 的消息。如何收听任何网卡上的所有多播消息?无需对它们进行硬编码。

最佳答案

struct ip_mreq允许您选择一个接口(interface)加入您想要的多播组。指定 INADDR_ANY 可让系统通过在路由表中查找匹配路由上的接口(interface)来为您执行此操作(这意味着任何接口(interface),而不是所有接口(interface))。如果您使用的是 Unix,您可以使用 netstat -ng 查看为组成员选择了哪个接口(interface)。 .

如果你想在所有接口(interface)上加入同一个组,那么用if_nameindex(3)枚举它们(你必须弄清楚如何在 Python 中执行此操作),为每个接口(interface)创建一个套接字,bind(2) 并加入 (setsockopt(2)) 组使用接口(interface)索引或地址,然后使用 select 轮询套接字。

关于python - 监听多个网络上的多播流量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14201631/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com