让我描述一下我的问题: 我已经用python创建了socket server,用java创建了client,我正在用java向服务器发送多个对象,方法是:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ByteArrayOutputStream append = new ByteArrayOutputStream();
ObjectOutput out = null;
byte finalarr[]=null;
try {
out = new ObjectOutputStream(bos);
out.writeObject(object);
out.flush();
byte[] objByte = bos.toByteArray();
bos.close();
out.close();
append.write(objByte.length);
append.write(objByte);
bos = new ByteArrayOutputStream();
out = new ObjectOutputStream(bos);
out.writeObject(value);
out.flush();
append.write(bos.toByteArray());
finalarr = append.toByteArray( );
os = sChannel.socket().getOutputStream();
oos = new ObjectOutputStream(os);
oos.write(finalarr);
} finally {
try {
bos.close();
} catch (IOException ex) {
}
}
现在,finalarr
包含object
的字节长度,然后是object
的实际字节[],然后是value
的字节[]。现在在python中,在收到第一个后,我想读取写在finalarr
第一个位置的字节长度,然后无论我得到什么长度,我想读取接收到的数组,直到该长度,这样我将分别得到object
,然后分别得到剩余部分
在python中,我完成了以下工作:
total_data=b''
while True:
data = self.clientsocket.recv(1024)
if not data: break
total_data += data
在total_data
中,我得到了整个bytearray,但我不知道如何读取它,以便按照说明分别得到两个对象
目前没有回答
相关问题 更多 >
编程相关推荐