让我来描述一下我的问题: 我已经在python中创建了socket服务器,在java中创建了客户端,从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
的byte []。现在在python接收到这个之后我想读取写在finalarr
的第一个位置的字节长度然后我得到的任何长度我想要读取接收到的数组长度,以便我得到object
另外,剩下的部分分开。
在python中我做到了这一点:
total_data=b''
while True:
data = self.clientsocket.recv(1024)
if not data: break
total_data += data
在total_data
中我得到了整个bytearray,但我不知道如何阅读它,以便我可以按照说明单独获取两个对象。