簡體   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