Socket:读取UDP数据包

3

我一直在搜索这个问题,但是由于问题不够通俗易懂,我无法理解。比如,我无法找到读取包含UTF-8文本的UDP数据包的解决方案。

因此,我创建了一个套接字,用于制作包含UTF-8文本的UDP数据包,并像这样发送它:

import socket

UDP_IP = "127.0.0.1"
UDP_PORT = 80
MESSAGE = "Hello, World!"

sock = socket.socket(socket.AF_INET, 
             socket.SOCK_DGRAM) 
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))

让我们把这个定义为 sender.py
现在,我想制作一个 reciever.py 脚本,在 sender.py 后执行。
我该怎么做?我听说过 Data, addr = udp.recvfrom(1024) 但我不太确定它是如何工作/如何使用的。
因此,每当我将它们一起执行时,Reciever.py 可以打印发送的UDP数据包的UTF-8文本。
1个回答

2
您需要让接收方执行以下几个步骤:
  1. 使用 socket.socket 创建一个套接字 sock
  2. 使用 sock.bind 绑定到该套接字。
  3. 在一个无限循环中执行:data,addr = sock.recvfrom(1024)
  4. 现在接收到的数据可供您使用,并且您可以根据需要处理它。
请注意,接收方将会睡眠,等待消息出现在其绑定的套接字中。处理完数据后,循环将再次执行,接收方将进入睡眠状态。 1024 对应于您可以接收的最大大小的消息(约为1024个字符,因为1个字符=1个字节)。如果您想能够接收更大的消息,请将此值增加。
请参见https://wiki.python.org/moin/UdpCommunication以获取详细的代码示例。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接