我正在尝试解码来自labview的TCP数据。我想发送4位标头,表示消息后面的长度。
我的LabVIEW成功地将4字节发送到Python。Python接收b'\x00\x00\x0\x016',它清楚地表示一个字节的信息。
然后,我如何将命令解码回整数长度,以便在消息的其余部分有额外的读取权限?
这是我的python脚本:
import socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('localhost', 9991))
server.listen(1)
while True:
conn, addr = server.accept()
messagelen = conn.recv(4)
print(messagelen)
bits = bytes.decode(messagelen)
print(bits)
server.close()
LabVIEW脚本
您确定收到的字节不是b'x00x00x00x16'
吗?如果是,则可以使用结构模块进行解包。
import socket
import struct
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('localhost', 9991))
server.listen(1)
while True:
conn, addr = server.accept()
bits = conn.recv(4)
messagelen = struct.unpack('>i', bits)[0]
print(messagelen)
server.close()