最近在学习Java的过程中突然想到一个问题:对于C/C++中的数据结构可以非常方便地用struct来封装应用层协议,那么Java中如何做呢?
比如,某应用层协议这样:
| 4B | 8B | 4B | 8B | NB | 4B |
头部 时间 类型 长度 数据 尾部
在C/C++里可以非常方便地用一个结构体包含:
struct DataProtocal{
int header;
short year;
short month;
short day;
int type;
float len;
char data[];
int end;
}
收到数据之后,直接简单粗暴地强制类型转换:DataProtocal* data = (DataProtocal*)receive;然后就可以很简单地数据结构性输出了。
Java中目前想到一种:就是分隔插入的方式,就是把协议字段的各部分之间加上分隔符,这样做比C++确实是麻烦了不止一倍。这个方法中注意,最简单的办法是分段提取,但是不提取数据字段,也就是说把协议头段和尾段单独提取解析,然后再去校验数据字段。
今天先想到这里吧,后续有新的办法,再贴出来