繁体   English   中英

在树莓上一段时间后,多播UDP停止接收

[英]Multicast UDP stop receiving after a while on a raspberry

我正在尝试使Raspberry(在Raspbian上)接收UDP多播消息。 我在Python 3中使用以下代码:

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

while True:
    data = sock.recv(32).decode("utf8")
    # Do stuff with the received data

这段代码可以正常工作,我正在接收所需的数据包,但是过一会儿(通常是5分钟), sock.recv(32)被卡住了,什么也收不到。 完全相同的代码可以在我的计算机上正常工作,现在已经运行了一个多小时,可以接收所有数据包。

有没有人在Raspberry上遇到这个问题? 提前致谢

这听起来像是典型的IGMP问题。 这些问题很常见 典型的模式是,一切正常进行,一段时间后停止工作。

路径上的某些路由器或交换机停止传输多播数据包。 在路由器中查找选项以启用/禁用IGMP监听,并可能启用/禁用不同的IGMP版本。 尝试使用其他开关。 避免使用外部硬件(例如PowerLine适配器)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM