接收UDP数据-如何处理碎片消息

时间:2020-01-13 09:58:56

标签: python udp

我收到以下形式的udp消息: SOH+'2'+STX+Data+ETX+GS+Checksum+EOT,其中数据包含一个字符串,其中多个值由制表符分隔。

我的收听代码如下:

while True:
    data, addr = sock.recvfrom(1024)  # buffer size is 1024 bytes

    data = data[3:-6]

    upd_data = data.decode()

    upd_data = upd_data.split("\t")

现在我遇到了两个问题:

  1. 当前,我只是将字符串的一部分剥离掉,这对我来说似乎确实很棘手,但是它可以工作,因为udp消息为十六进制形式。有没有更好的方法来解析这些字符串并访问其值?

  2. 我知道udp消息在发送时可以分段。 recvfrom()如何处理这种情况?似乎它不会等到收到指定的字节后才出现,但是也许有一种方法可以完成此操作。还是有可能侦听SOH,然后开始接收数据,直到发送EOT为止?

0 个答案:

没有答案