用Python接收UDP消息

用Python接收UDP消息,python,udp,Python,Udp,我试图获得一个简单的Python脚本来接收UDP消息,但我无法让它工作。以下代码基于此论坛上的其他建议 import socket #UDP_IP_REC = "192.168.10.1" UDP_PORT_REC = 5005 sock_rec = socket.socket(socket.AF_INET, # Internet socket.SOCK_DGRAM) # UDP sock_rec.bind(('', UD

我试图获得一个简单的Python脚本来接收UDP消息,但我无法让它工作。以下代码基于此论坛上的其他建议

import socket

#UDP_IP_REC = "192.168.10.1"
UDP_PORT_REC = 5005

sock_rec = socket.socket(socket.AF_INET, # Internet
                        socket.SOCK_DGRAM) # UDP

sock_rec.bind(('', UDP_PORT_REC))

while True:
    data, addr = sock_rec.recvfrom(4096) # buffer size is 1024 bytes
    print("received message: %s" % data)
我有以下代码发送我想要接收的数据:

import socket

Forces = [2.1,2.2,2.3,0.1,0.2,0.3]

UDP_IP = "192.168.10.1"
UDP_PORT = 5005
MESSAGE = b'Forces: %.2f, %.2f, %.2f, %.2f, %.2f, %.2f' % (Forces[0], Forces[1], Forces[2], Forces[3], Forces[4], Forces[5])

print("UDP target IP: %s" % UDP_IP)
print("UDP target port: %s" % UDP_PORT)
print("message: %s" % MESSAGE)

sock = socket.socket(socket.AF_INET, # Internet
                    socket.SOCK_DGRAM) # UDP

while True:
    sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))

wait = input("Press Enter to continue.")
我正在从虚拟机向本机操作系统发送消息,我可以使用wireshark在接收端查看消息。但是,recvfrom()函数没有接收任何内容。我排除了防火墙问题,因为我可以在wireshark中看到数据包。
任何看似简单的想法都行不通?

您想通过在绑定中将空字符串作为IP传递来多播吗?尝试将客户端中的UDP_IP更改为“localhost”或“127.0.0.1”。我使用空字符串作为IP,以尽可能多地排除问题的根源。我试着换成本地主机,结果成功了。这让我进一步调查了防火墙,结果发现Wireshark在防火墙出现之前就开始工作了。因此,将Python添加到异常列表解决了这个问题。谢谢你们的帮助。