java socket网络数据解析工作 远程全职
一般月薪4000元- 项目类型:其他
- 每月工作: 4天
- 工作方式:定期坐班
职位详情
需要使用JAVA实现一个接受对方软件通过socket,tcp连接发送过来的数据包解析工作。
数据帧定义
数据帧定义如下图所示:
图1 数据帧定义
1.1 说明
1、帧头是 0xaa 0x55,帧尾是 0xaa 0x81,数据帧中不允许出现帧头帧尾。所以在帧中(包括帧长度、源地址、目的地址、指令、数据和校验)如果出现 0xaa,则需要在其后面补 0x00。解帧执行相反的操作就行,遇到 0xaa,舍弃后面的 0x00 。
2、帧长度是2 Bytes,所以帧的最大长度不能大于65535。帧长度是指帧长度 + 源地址 + 目的地址 + 指令 + 数据 + 校验的长度。帧长度是在帧中补 0x00 前的数据长度,这个需要注意。最小帧长度是数据长度为 0x00 时的情况,此时帧长度是 14。
3、源地址是发出数据的设备地址,地址长度是 4 个 Bytes,与 IPv4 的地址数相同。
4、目的地址是接收数据的设备地址,地址长度是 4 个 Bytes,与 IPv4 的地址数相同。
5、指令用于说明本帧数据的属性,2 Bytes。关于指令的说明见第 2 节。
6、数据是本帧数据的实体内容。
7、校验是CRC16校验。具体定义见第 3 节。
8、实际的帧长度因为有补 0x00 操作,所以是不定长的。