簡體   English   中英

Docker - UDP 廣播在 MacOS 下不起作用

[英]Docker - UDP Broadcast not working under MacOS

我有一個 python 應用程序,它通過 UDP 廣播數據包搜索網絡上的設備。 我的代碼在 Windows、MacOS (Darwin)、Docker (Windows Host) 下運行良好,但在 MacOS (Darwin) 上不能運行 Docker。 有人可以指出我找到並解決原因的方向。

Mac IP(和要找到的設備)的 IP 為 192.168.2.x 通常為 192.168.2.255 作為廣播作品

Python 代碼:(為 MacOS 嘗試了各種廣播地址)

server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
server.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
server.settimeout(0.2)
server.bind(("", 9302))
message = msgpack.packb({“service”: “control.ws”})
a=2
print("\tLooking for Server:")
while a>1:
    print("\t\tSending broadcast #"+str(a))
    server.sendto(message, (Broadcast_Addr, 9101))
    print("\t\t…Broadcast to: “, Broadcast_Addr)
    time.sleep(1)
    try:
        data, addr = server.recvfrom(1024)
    except socket.error as e:
        print(“Error getting socket data: %s” % e)
        print(“Exiting Program Now”)
        sys.exit(1)
    except:
        print(”****Stopped looking - Major Error!")
        sys.exit(1)
    else:
        Server_Data = msgpack.unpackb(data)
        #Server was found
a=a-1

Windows Docker 調用(有效)

docker run -it -p 8765:8765 -v C:\ABC_Volume:/logs -p 9101:9101/udp -p 9302:9302/udp myimage:v1

MacOS Docker 調用(不起作用)*

m$ docker run -it -p 8765:8765 -p 9101:9101/udp -p 9302:9302/udp  myimage.v1

來自 MacOS 的 Docker 信息

UDP 廣播和主機網絡在 Docker for Mac 上不起作用。 您的代碼可能沒問題(因為它適用於所有其他平台)。 最好的解決方案是啟動一個虛擬機並從那里運行 docker。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM