struct.unpack_from() 缓冲区读取数据超过 255 字节的问题

问题描述

我正在使用 zmq 从客户端/服务器来回传递消息。我正在使用 pickle 反序列化消息,因此我可以从中解析信息。当我发送小于 256 字节的消息时,一切都按预期工作,我可以从 12 字节中获取消息 ID。但是,如果我发送的消息的缓冲区长度超过 255 字节,则 struct.pack_into 似乎没有正确读取字段,并给出错误的 messageID。我打印出字节,它们仍然正确发送。似乎 struct.pack_into 无法再正确找到第 12 个字节。不知何故,大小正在改变它的行为。建议?

客户:

buf = ctypes.create_string_buffer(256)
struct.pack_into("!qII",buf,message.Timestamp,message.MessageID,message.Payload)
# Send reply back to client with version
socket.send(buf)

服务器:

message = socket.recv()
message = pickle.dumps(message)  # Serializes object

(timestamp,message_ID) = struct.unpack_from('!qi',message,4)  # Start reading on 4th byte (pickle adds header)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...