0

假设我从网络上得到一个字节序列,顺序如下:XXXX = XXXX = XXXX = ... 依此类推,您可以立即注意到模式(一条消息是 5 个字节的序列:“XXXX =
X 可以是任何当然除了'='之外的数字)

现在,传输周期性地发生。在某些时候,我的应用程序正在启动并获取字节序列

获取这些字节并将它们构建为 5 字节消息的最佳算法是什么?
有两个问题:
1.如何找到第一条消息?我想我需要删除一些字节直到我得到'='对吗?
2. 应用程序如何处理传输暂停和重新开始

4

1 回答 1

0

最简单的方法是使用阻塞读取(这是最常见的,因为它最简单)一次读取 5 个字节。

通常,您不会假设一开始就有垃圾数据,而只是阅读所有内容。如果你有标题,我也会读。

DataInputStream dis = new DataInputStream(socket stream);
byte[] bytes = new byte[5];

int sep;
do {
  dis.readFully(bytes);
  process(bytes);
} while((sep = dis.read()) == '=');
if (sep > 0)
   System.err.println("Unexpected character "+ (char) sep));
于 2012-05-07T07:04:37.580 回答