【问题标题】:Python: Get sender of UDP broadcast / socket.recvcmsg() on WindowsPython:在 Windows 上获取 UDP 广播/socket.recvmsg() 的发送者
【发布时间】:2018-03-24 07:35:27
【问题描述】:

我使用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

【问题讨论】:

  • 您检查过 Windows 防火墙吗?
  • @uphill 这与连接无关。当然我可以使用 socket.recv() 接收广播,但结果只包含 UDP 有效负载。
  • 你有代码和平吗?
  • @uphill 查看我的编辑
  • 我认为在 Windows 上,recvfrom 应该可以工作?

标签: python windows sockets udp broadcast


【解决方案1】:

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

socket.recvfrom(bufsize[, 标志])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-23
    • 2016-07-26
    • 2019-06-17
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 2017-04-19
    相关资源
    最近更新 更多