套接字:读取UDP数据包

时间:2016-06-03 15:59:28

标签: python sockets network-programming

我一直在搜索这个问题,但我无法理解这个问题,因为它不是很普遍,我找不到解决方案来读取包含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 个答案:

答案 0 :(得分:2)

你希望接收者做几件事:

  1. 使用sock创建套接字socket.socket
  2. 使用sock.bind绑定到套接字。
  3. 在无限循环中,执行:data, addr = sock.recvfrom(1024)
  4. 现在收到的数据可供您使用,您可以按照自己的意愿处理。
  5. 请注意,接收器将处于休眠状态,等待它绑定到的套接字中出现消息。处理完数据后,循环将再次执行,接收器将重新进入休眠状态。

    1024对应于您可以接收的最大尺寸消息(大约1024个字符,因为1字符= 1字节。如果您希望能够接收更大的消息,使这个值更大。

    有关详细的代码示例,请参阅https://wiki.python.org/moin/UdpCommunication