考虑java中实现Serializable
的对象。我想将该对象发送到TCP套接字上的python代码。我使用:
//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,这一切都很好,直到我在LinkedHashMap
中通过setAttributeValue()
。在Python中我这样做:
total_data=b''
while True:
data = self.clientsocket.recv(8192)
if not data: break
total_data += data
pyobj = javaobj.loads(total_data)
为此我得到例外:
RuntimeError:流中的未知OpCode:0x8(偏移量为0x14C)
会是什么原因?是不是找不到操作码"某些东西"?是否有人可以建议任何其他想法将从java发送的字节流转换为对象在python世界中对该对象执行一些操作并将其发送回java世界并再次反序列化。