Docker-UDP广播在MacOS下不工作



我有一个python应用程序,它通过UDP广播数据包在网络上搜索设备。我的代码在Windows、MacOS(Darwin(、Docker(Windows主机(下运行良好,但在MacOS(达尔文(上的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("ttSending broadcast #"+str(a))
server.sendto(message, (Broadcast_Addr, 9101))
print("tt…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。

最新更新