读取bytearray到指定位置

时间:2018-01-19 06:04:29

标签: java python

让我来描述一下我的问题: 我已经在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,但我不知道如何阅读它,以便我可以按照说明单独获取两个对象。

0 个答案:

没有答案