研究背景及目的:

ARPG项目的需求:需要将现有的服务器从C++的编写平台换为java语言。
在对需求进行分析的过程中,发现几点需要研究实现的问题

  1. java与c+语言特性迥异,相比c+ 和c#关系的密切性,java需要对c#风格的一些数据结构和编码格式进行兼容;
  2. c#拥有的无符号数据类型如 ushort unint java并不存在,需要对数据类型进行转换;
  3. 根据开发需要 客户端现有的通信协议不能更改,所以在java中进行各类型的兼容操作
  4. 在项目中底层通信报文的类 是由名叫PROTOGEN的现有工程进行生成,生成方式是以生成字符串文本类的方式,原工程已经可以同时生成c#及c++的类(.cs及.h文件),但并没有生成迁移后的服务器java的相关代码和类的功能。故需要二次开发。

工作任务:

综上所述,工作任务有两点:

  1. 重构java的 数据流输入和输出类,使其兼容c#客户端传输过来的 二进制数据结构;(以下简称PJIO)
  2. 对PROTOGEN进行二次开发,使其能够生成java的 底层协议类(.java文件),并不破坏其现有生成其他语言的类的功能;(以下简称PGPLUS)
  3. 进行测试和验证,确保前两项工作任务的有效和后续开发工作的顺利开展。

 

工作开展中遇到的技术问题和技术细节:

PJIO:
  1. 在测试和开发过程中,通过查阅资料,发现c#和C++的数据存储格式为小端类型而java是大端类型(即字节序问题)

在几乎所有的机器上,多字节对象都被存储为连续的字节序列。例如在C语言中,一个类型为int的变量x地址为0x100,那么其对应地址表达式&x的值为0x100。且x的四个字节将被存储在存储器的0x100, 0x101, 0x102, 0x103位置。[1]
而存储地址内的排列则有两个通用规则。一个多位的整数将按照其存储地址的最低或最高字节排列。如果最低有效位在最高有效位的前面,则称小端序;反之则称大端序。在网络应用中,字节序是一个必须被考虑的因素,因为不同机器类型可能采用不同标准的字节序,所以均按照网络标准转化。

延伸阅读

学习是年轻人改变自己的最好方式-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训学习是年轻人改变自己的最好方式