我收到以下形式的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")
现在我遇到了两个问题:
当前,我只是将字符串的一部分剥离掉,这对我来说似乎确实很棘手,但是它可以工作,因为udp消息为十六进制形式。有没有更好的方法来解析这些字符串并访问其值?
我知道udp消息在发送时可以分段。 recvfrom()
如何处理这种情况?似乎它不会等到收到指定的字节后才出现,但是也许有一种方法可以完成此操作。还是有可能侦听SOH
,然后开始接收数据,直到发送EOT
为止?