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

原创 2012年03月28日 21:08:59

和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中也变得简单起来了,不妨试一下吧。


相关文章推荐

Java用类实现结构体的功能

我们都知道C/C++里面的结构体在储存数据的时候很方便,但是在Java中没有Struct,但是我们可以用类来实现Struct的功能 与Struct声明功能一样的类的定义: public  clas...

Java 结构体之 JavaStruct 使用教程<二> JavaStruct 用例分析

使用环境 前一篇在介绍 JavaStruct 类时指定了使用库使用环境为 Java 5 及以上,也即开发我们使用的 JDK 版本为1.5及以上就可以了。以下讲解的用例可以直接将 code 直接粘贴到 ...

java和C结构体数据交换

package com.cvicse.naba.service.impl.user; import java.util.ArrayList; import java.util.HashMap; im...

java解析C结构体框架

jcstruct 地址:http://git.oschina.net/yhIlc/jcstruct/tree/master 介绍   描述:为了解决java与C结构通信过程中结构体解析问题。 ...

java 类与结构体转化

大家知道,java是没有结构体的,而java中是用类保存属性 这时

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Java中发送结构体

最近给个朋友做个网站的客户端,使用C/S模式,Client为VC6开发,Server为Java,通过Socket通信。由于Client这边为C++,所以,在接受Java发过来的数据包时,需要知道发来的...
  • xwchen
  • xwchen
  • 2007年04月26日 15:17
  • 10310

JNI层与Java层结构体传递

JNI层与Java层结构体传递 最近在做移动终端开发,需要把native层C++一些统计数据传递给java层使用,在做这部分功能的时候发现JNI层与Java层结构体以及内嵌结构体传递在网上的资料甚少,...

java和C结构体通信

package com.cvicse.naba.service.impl.user; import java.util.ArrayList; import java.util.HashMap; im...

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

和C/C++不同,Java中没有结构体,联合体。这是Java作为高级语言的进步,但也使得它在进行网络字节流封送上显得捉襟见肘。 这里所指的是在进行网络编程,串口编程等需要和某些C语言中结构体形式...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java实现结构体,让字节流封送简单起来
举报原因:
原因补充:

(最多只允许输入30个字)