【问题标题】:Socket: Reading UDP Packet套接字:读取 UDP 数据包
【发布时间】:2016-06-04 00:22:05
【问题描述】:

我一直在搜索这个问题,但我无法理解这个问题,因为它不是很笼统,例如,我找不到读取包含 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 文本。

【问题讨论】:

    标签: python sockets network-programming


    【解决方案1】:

    你会希望接收者做几件事:

    1. 使用socket.socket 创建一个套接字sock
    2. 使用sock.bind绑定到套接字。
    3. 在无限循环中,执行:data, addr = sock.recvfrom(1024)
    4. 现在收到的数据可供您使用,您可以随意处理。

    请注意,接收方会休眠,等待消息出现在它绑定的套接字中。处理完数据后,循环会再次执行,接收方会重新进入休眠状态。

    1024 对应于您可以接收的最大消息大小(大约1024 个字符,因为1 字符=1 字节。如果您希望能够接收更大的消息,请将该值设置得更大。

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

    【讨论】:

      猜你喜欢
      • 2020-11-29
      • 1970-01-01
      • 2018-12-25
      • 2012-06-17
      • 2014-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      相关资源
      最近更新 更多