创建具有固定大小的数据包标识符的指定数据包结构

时间:2018-09-05 20:12:25

标签: java android bit-manipulation packet

我必须创建一个数据包结构以通过websocket发送,如下所示:-

  1. 前4个字节-标识符1(整数)
  2. 接下来的4个字节-identifier2(整数)
  3. 插入8个字节的标识符后的数据-字节数组(字节[])

现在上面的3点包含一个字节数组,该数组又分为2部分:-

  1. 前2个字节-给定字节数组的长度(整数)
  2. 字节数组数据-长度(字节[])后的可变大小的字节数组

现在,我如何确保数据包结构保持完整,因为在读取数据包时,它必须采用上述格式。正在节点中读取它。

ByteArrayOutputStream bOut = new ByteArrayOutputStream();
int c;
try {
  bOut.write((byte)(id1));
  bOut.write((byte)(id2));
  bOut.write((byte)(byteArrayLen));
  bOut.write(byteArray);
  ByteArrayInputStream bInput = new ByteArrayInputStream(bOut.toByteArray());
  while(( c = bInput.read())!= -1) {
    Log.d(TAG, "hello read" + c);
  }
} catch (Exception e) {
  Log.e(TAG, "error while creating packet", e);
}

我尝试了上面的代码。我不确定是否会始终保持数据包结构完整。请提供解决方案或对我如何实现这一要求进行解释。 我也错过了一些位操作,其中我将不得不移位位以确保前8个字节始终是标识符。请也研究它或提供一个链接,让我可以阅读更多有关它的信息并实现它。

0 个答案:

没有答案