假设我从网络上得到一个字节序列,顺序如下:XXXX = XXXX = XXXX = ... 依此类推,您可以立即注意到模式(一条消息是 5 个字节的序列:“XXXX =
X 可以是任何当然除了'='之外的数字)
现在,传输周期性地发生。在某些时候,我的应用程序正在启动并获取字节序列
获取这些字节并将它们构建为 5 字节消息的最佳算法是什么?
有两个问题:
1.如何找到第一条消息?我想我需要删除一些字节直到我得到'='对吗?
2. 应用程序如何处理传输暂停和重新开始。
假设我从网络上得到一个字节序列,顺序如下:XXXX = XXXX = XXXX = ... 依此类推,您可以立即注意到模式(一条消息是 5 个字节的序列:“XXXX =
X 可以是任何当然除了'='之外的数字)
现在,传输周期性地发生。在某些时候,我的应用程序正在启动并获取字节序列
获取这些字节并将它们构建为 5 字节消息的最佳算法是什么?
有两个问题:
1.如何找到第一条消息?我想我需要删除一些字节直到我得到'='对吗?
2. 应用程序如何处理传输暂停和重新开始。
最简单的方法是使用阻塞读取(这是最常见的,因为它最简单)一次读取 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));