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

时间:2017-10-12 11:22:37

标签: 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

1 个答案:

答案 0 :(得分:2)

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

  

套接字。 recvfrom bufsize [,标记])