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

标签 python windows sockets udp broadcast

我使用 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返回与您的代码正在查找的内容(字节、地址)相似的值,并且与 Windows 兼容

socket.recvfrom(bufsize[, flags])

关于Python:在 Windows 上获取 UDP 广播/socket.recvcmsg() 的发送者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46708337/

相关文章:

python - couchbase python 客户端中是否缺少 flush 方法?

windows - 如何在 Windows 中生成确定大小的文件?

c - 如何在这段代码中使用自定义函数?

java - 有没有办法唯一标识一个套接字?

c++ - 当服务器重新启动并且客户端收到 WSAECONNRESET 错误代码时,我是否应该重新创建整个套接字

python - 属性错误: 'str' object has no attribute 'hist'

python - 如何重现由 sqlalchemy session 缓存引起的错误

python - 暴力算法奶牛运输的问题

php - 在 Windows 中运行 HipHop PHP

javascript - Node.js "ws"websocket 服务器在 ~30 秒后随机断开客户端,错误 1006