我正在努力解决一个非常讨厌的bug。我有两台电脑。我从一个发送数据,另一个接收数据。
起初我尝试了struct fmt,这就是我发送它的方式:
# Two chars and three shorts
fmt = struct.Struct('2B 3h')
# Two chars and three floats
fmt2 = struct.Struct('2B 3f')
message=[0]*5
message[0] = cmd
message[1] = 6
message[2] = d1
message[3] = d2
message[4] = d3
conn.send(fmt.pack(*message))
在客户端上正确解压并正确的值:
raw = self.s.recv(BUFFER_SIZE)
idx = 0
while idx < len(raw):
length, data = parse(raw, idx)
idx += length
cmd, length, x, y, z = fmt.unpack(data)
但是如果我在服务器和客户端上使用第二种格式(fmt2)unpack失败。 (我注意到d1,d2和d3是漂浮物)。我试图逐个解压缩值,但我得到x,y,z的错误数据。
我不知道如何解决这个问题,而且我对结构并不熟悉。
谢谢