读取字节数组到指定位置

2024-04-27 03:21:59 发布

您现在位置:Python中文网/ 问答频道 /正文

让我描述一下我的问题: 我已经用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,但我不知道如何读取它,以便按照说明分别得到两个对象


Tags: newclosedata字节objectoutwritetotal