首页 > 解决方案 > pythons“socket”库中的“recvfrom”在 UDP 实现中找不到通过以太网电缆成功发送的消息

问题描述

我正在尝试实现 UDP,其中我的计算机上的 python 脚本正在运行服务器,而通过以太网电缆连接的微控制器正在运行客户端。在python脚本中,我绑定到以太网端口的ip和端口nr,在wireshark中我可以看到来自客户端的消息的目标ip和端口nr与python脚本中绑定的相同。但是当我运行脚本时,它会卡在 recvfrom 中并且什么也没找到,尽管连续的消息被发送到套接字绑定的端口。非常感谢任何帮助或想法!

有问题的python脚本:

import socket

localIP     = "192.168.1.123"

localPort   = 12345

bufferSize  = 1024

msgFromServer  = "Hello UDP Client"

bytesToSend    = str.encode(msgFromServer)

# Create a datagram socket

UDPServerSocket = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM)

# Bind to address and ip

UDPServerSocket.bind((localIP, localPort))

print("UDP server up and listening")

# Listen for incoming datagrams

while(True):

    bytesAddressPair = UDPServerSocket.recvfrom(bufferSize)

    message = bytesAddressPair[0]

    address = bytesAddressPair[1]

    # Sending a reply to client

    UDPServerSocket.sendto(bytesToSend, address)

标签: pythonsocketsudpwiresharkethernet

解决方案


找到了!我的防火墙阻止了 python 脚本看到 udp 包,所以我会尝试为特定端口关闭防火墙。谢谢@Zac67


推荐阅读