Python: 在 Windows 上获取 UDP 广播的发送者/socket.recvcmsg()

Python: Get sender of UDP broadcast / socket.recvcmsg() on Windows

我使用socket.recvmsg() 来获取UDP 广播消息的数据和发件人的IP 地址。这在 Linux 上工作正常,但此方法在 Windows (Python 3.3) 上不可用。如何获取发件人的IP地址?

from socket import *

fd = socket(AF_INET, SOCK_DGRAM)
fd.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
fd.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)

data, _, _, addr = fd.recvmsg(4096) # <- how to achieve this without recvmsg?
host, upd_port =  addr

我在您链接的 Python 文档中注意到,recvfrom returns 与您的代码正在寻找的值(字节、地址)相似并且与 Windows

socket.recvfrom(bufsize[, flags])