问题描述
我正在使用 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 (将#修改为@)