Java实现结构体,让字节流封送简单起来

和C/C++不同,Java中没有结构体,联合体。这是Java作为高级语言的进步,但也使得它在进行网络字节流封送上显得捉襟见肘。

这里所指的是在进行网络编程,串口编程等需要和某些C语言中结构体形式定义的协议接口进行通讯时,Java由于缺乏结构体和字节数组之间的有效转换方法,所带来的编程上的困境。

按照通常的想法,我们需要自己去手动的一个字节,一个字节的拼凑,来实现C语言中结构体定义的数据包。在面对大量接口的时候,这样做显然绝非是可行的办法。造成这个问题的根本原因是,指针这一对内存在字节量级操作的语法特性在Java当中是不成立的。其结果就是在C语言里面通过填充结构体来完成的字节流封送编程变得复杂。

既然这是一个相当普遍的问题,那么一定是有先人尝试去解决过的。事实上却是是这样,通过一番努力,终于发现了JavaStructJavolution现成的两个解决方案。我们不妨拿来为我所用。

JavaStruct

http://code.google.com/p/javastruct/wiki/HowToUseJavaStruct

这个实现比较轻量级,POPO的方式,还不支持联合体,但是联合体的问题,在编程中一般是可以避开的。

Javolution

http://javolution.org/

这个类库比较庞大,对结构体和联合体都有支持。


更详细的操作细节,可以参考以上两个链接中给出的内容。有了它们,数据封送在Java中也变得简单起来了,不妨试一下吧。


评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值