Docker-UDP广播在MacOS下不工作

Docker-UDP广播在MacOS下不工作,macos,docker,udp,Macos,Docker,Udp,我有一个python应用程序,它通过UDP广播包在网络上搜索设备。我的代码在Windows、MacOS(达尔文)、Docker(Windows主机)下运行良好,但在MacOS(达尔文)上运行不好。有人能给我指点方向,找出并解决问题的原因吗 Mac IP(以及待查找的设备)的IP为192.168.2.x 通常为192.168.2.255,因为广播工作正常 Python代码: (为MacOS尝试了各种广播地址) Windows Docker调用(有效) MacOS Docker呼叫(不工作)* UD

我有一个python应用程序,它通过UDP广播包在网络上搜索设备。我的代码在Windows、MacOS(达尔文)、Docker(Windows主机)下运行良好,但在MacOS(达尔文)上运行不好。有人能给我指点方向,找出并解决问题的原因吗

Mac IP(以及待查找的设备)的IP为192.168.2.x 通常为192.168.2.255,因为广播工作正常

Python代码: (为MacOS尝试了各种广播地址)

Windows Docker调用(有效)

MacOS Docker呼叫(不工作)*


UDP广播和主机网络在Docker for Mac上不起作用。您的代码可能很好(因为它可以在所有其他平台上工作)。最好的解决方案是启动一个虚拟机并从里面运行docker。

它以什么方式不工作?您能纠正Python代码中的缩进和引号吗?
docker run
行您可以启动shell,而不是运行脚本,并且有一些
--链接到其他容器;你能提供一个足够构建和运行它的方法吗?它不起作用,因为python代码从来没有在网络上找到设备。我不确定广播是否没有离开主机,或者回复没有回来(我不知道如何检查)。对于代码和命令,很抱歉-我已经清理了它们。我不确定你如何复制,因为你需要找到设备。
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
docker run -it -p 8765:8765 -v C:\ABC_Volume:/logs -p 9101:9101/udp -p 9302:9302/udp myimage:v1
m$ docker run -it -p 8765:8765 -p 9101:9101/udp -p 9302:9302/udp  myimage.v1