【发布时间】:2018-01-18 06:22:13
【问题描述】:
考虑 java 中实现Serializable 的对象。我想将该对象发送到 TCP 套接字上的 python 代码。我正在序列化对象并使用 TCP 发送:
//socket connection code
PySessionObject object = new PySessionObject();
object.setMethodCall(PyServerMethodConstant.SETATTRIBUTE);
object.setAttributeName(name);
object.setAttributeValue(value);// value is of object type which also implements Serializable
os = sChannel.socket().getOutputStream();
oos = new ObjectOutputStream(os);
oos.writeObject(object);
oos.flush();
os.flush();
//socket closing and exception handling
现在我想在python中将此字节流转换为对象对该对象执行一些操作并将其发送回java世界并再次反序列化它。为此,我来到了javaobj-py3,这一切都很好,直到我在setAttributeValue() 中通过LinkedHashMap。在 Python 中,我正在这样做:
total_data=b''
while True:
data = self.clientsocket.recv(8192)
if not data: break
total_data += data
pyobj = javaobj.loads(total_data)
为此,我得到了例外:
RuntimeError: Unknown OpCode in the stream: 0x8 (at offset 0x14C)
会是什么原因?是不是“某事”找不到操作码?是否有人可以提出任何其他想法,将从 java 发送的字节流转换为 python 世界中的对象对该对象执行一些操作并将其发送回 java 世界并再次反序列化。
【问题讨论】:
标签: java python serialization