1.一种GIS系统实时数据传输方法,其特征在于:所述数据传输方法包括以下步骤:
1)参数初始化,过程如下:
1.1)设置计时器初始值为0s,最大重连时间间隔为320s;
1.2)设置数据优先级队列,发送优先级队列sendQueue1,sendQueue2,sendQueue3;
2)封装数据包,数据包的格式如下:
2 1 1 4 — 16
HEAD Type Priority DataLength Data Verify其中,HEAD是数据包的协议头,占用2个字节,值为0x1110;Type表示数据包的类型,占用1个字节,取值为0x00到0xFF之间的十六进制数,0x01表示普通数据信息,0x02表示数据重发请求信息,0x03表示心跳响应信息,0x04数据接收应答信息;Priority表示数据发送和数据接收处理的优先级,占用一个字节;DataLength表示数据包的长度,占用4个字节;Data表示数据包的数据,占用字节由数据包大小决定;Verify表示校验字段,占用16字节,是数据包在MD5加密后的产生的128位的散列值;
3)数据发送过程:
3.1)服务端阻塞等待客户端连接,如果有客户端建立连接,则建立数据交互通道,进入步骤3.2);
3.2)判断是否有数据向服务端发送,有则进入步骤3.3),否则进入步骤4);
3.3)判断计时器是否启动,是则关闭计时器,然后进入步骤3.4),否则进入步骤3.4);
3.4)获得数据,生成数据的类型,进入步骤3.5);
3.5)生成优先级,进入步骤3.6);
3.6)将数据放入MD5算法中生成128位校验码,进入步骤3.7);
3.7)按数据包的优先级放入优先级队列,进入3.8);
3.8)发送数据包;
4)数据接收过程:
4.1)判断是否有数据接收,有则进入步骤4.2),否则进入4.9);
4.2)判断计时器是否启动,是则关闭计时器,否则进入步骤4.3);
4.3)解析数据包,获得包类型,如果是0x01,则进入步骤4.4);如果是0x02,则进入步骤
4.5);如果是0x03,则进入步骤4.6);如果是0x04则进入步骤4.7);
4.4)获取数据包数据内容,进入步骤4.8);
4.5)数据包优先级提升至2,向服务器重发数据包;
4.6)获取心跳响应包;
4.7)获取数据接收应答包;
4.8)校验数据包中的数据是否正确,如果数据正确,发送数据应答包,否则发送数据重发请求数据包;
4.9)判断计时器是否启动,是则进入步骤4.10),否则进入步骤4.11);
4.10)判断计时器定时时长是否超过320s,是则进入步骤4.12),否则进入步骤4.13);
4.11)启动计时器,发送心跳检测包,继续监听是否有数据发送或者接收;
4.12)断开连接;
4.13)发送心跳检测包,继续监听是否有数据发送或者接收。