Flatbuffers struct.error:从解包\u需要至少4字节的缓冲区

2024-09-27 21:28:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个在端口上发送连续flatbuff数据的服务器,我使用python套接字收集数据并反序列化它们。当我尝试使用dataOut.Id()访问数据时,它会抛出以下错误消息:

Traceback (most recent call last):   File
"/home/user/Flatbuf_data/Read_Flatbuf_Data.py", line 45, in <module>
    Id = dataOut.Id()   File "/home/user/Flatbuf_data/Trval.py", line 25, in Id
    o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
File "/usr/local/lib/python3.5/dist-packages/flatbuffers/table.py",
line 37, in Offset
    vtable = self.Pos - self.Get(N.SOffsetTFlags, self.Pos)   File "/usr/local/lib/python3.5/dist-packages/flatbuffers/table.py", line
93, in Get
    return flags.py_type(encode.Get(flags.packer_type, self.Bytes, off))   File
"/usr/local/lib/python3.5/dist-packages/flatbuffers/encode.py", line
26, in Get
    return packer_type.unpack_from(memoryview_type(buf), head)[0] struct.error: unpack_from requires a buffer of at least 4 bytes

下面是我正在使用的代码片段,我已经在2.7和;3.6并得到相同的错误

import socket
import Trval    # Generated from fbs file. This file is generated with flatc --python <filename>.fbs command
import time
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((hostname, port))
data = s.recv(1024)   # unsure what value to give, hence given 1024 as example value
time.sleep(1)
print("Connection closed.")
s.close()

byte_Data = bytearray(data)  # converting bytes to bytearray type"
dataOut = Trval.Trval.GetRootAsTrval(byte_Data, 0)
Id = dataOut.Id()   # Getting error here
print(Id)

我不确定我做错了什么,我正在按照Flatbuffers-Python教程的步骤进行操作。有人能帮我解决这个问题吗


Tags: 数据inpyselfiddatagettype

热门问题