通信服务器是一个专用系统,为网络上需要通过远程通信链路传送文件或访问远地系统或网络上信息的用户提供通信服务。通信服务器根据软件和硬件能力为一个或多个用户提供通信信道,通过转换数据格式、通信协议和电缆信号提供用户与主机的连接,可以远程控制软件,允许远地用户从家里或其它远距离位置经拨号进入网络,通信服务器能为内部用户提供一组异步调制解调器,用于拨号访问远地系统、信息服务或其它资源,并维持与远地局域网的专用或拨号(间歇的)链路并在局域网间自动传送数据分组。然而服务端程序是JavaL4提供了NIO使开发者可以使用Java编写高性能的程序实现的,但使用原生的NIOAPI就像LinuxC中网络编程一样,需要做IO处理、协议处理等低层次工作,减低服务器通信时的效率,不利于通信的快捷进行,而在有些业务中需要准确快捷的将远程数据上传,比如医院或家庭中健康一体机上传数据的需求。因此本发明提供一种健康一体机通信服务器的实现方法,基于netty框架利用TCP/UDP通信实现服务器终端将健康一体机的体检数据上传、发送报警信号、验证用户ID和发送用户个人信息等功能,提高了通信服务器的性能、可靠性。其中netty是个异步的事件驱动网络应用框架,提供了统一的底层协议接口,使得开发者从底层的网络协议中解脱出来,可以专注于上次业务实现,具有高性能、高扩展性等特性。
本发明针对目前服务端程序需要做IO处理、协议处理等低层次工作,减低服务器通信时的效率,不利于健康一体机通信的快捷进行的缺陷,提供一种健康一体机通信服务器的实现方法,基于netty框架实现的TCP/UDP通信服务器终端,应用到健康一体机的体检数据上传、发送报警信号、验证用户ID和发送用户个人信息等功能。
本发明提出的具体方案是:
一种健康一体机通信服务器的实现方法,基于netty的TCP和UDP协议服务器端,TCP和UDP协议服务端分别指定不同的端口号;健康一体机为客户端,根据IP地址和Port端口号分别连接TCP和UDP协议服务端,过程为:
TCP协议服务器端接收客户端发送的MD5校验码,用于身份识别;MD5若校验不通过,则断开连接,重新连接校验,若校验通过,则TCP协议服务器端发送校验通过信息;
客户端接收到TCP协议服务器端发送的校验通过信息后,发送业务数据,业务数据以字节的形式传输;
TCP协议服务器端接收到业务数据后,进行数据解析,并放入数据库中,返回给客户端接收到数据的信息;
UDP协议服务器端根据客户端发送的数据的长度不同判断是报警信号还是验证用户信号;
如果是报警信号则接收报警并返回给客户端已经接收到报警的信息;
如果是验证用户信号则解析信号数据,根据信号数据查询数据库并把查询到的数据返回给客户端,完成验证。
所述TCP协议服务器端的身份识别具体过程为:健康一体机连接TCP协议服务器后,发送midMD5校验码,mid是客户端唯一编号,服务器通过mid从后台查找对应的version,即版本号和uid,即唯一用户编号,并获取当天的日期,然后以mid+version+uid+date为seed生成MD5值并与健康一体机发送的MD5校验码进行比对,如果对比失败则回复MD5验证错误的信息,服务器主动断开健康一体机的TCP连接;如果比对成功则回复OK信号。
所述OK信号带有一个时间戳,表示健康一体机必须在此时间戳内发送体检数据或日志文件到TCP协议服务器端,否则重新发送校验请求。
所述的客户端发送的业务数据包括数据长度、文件类型(H/L)、文件数据,文件类型中H代表体检数据、L代表日志文件。
所述的TCP协议服务器端进行数据解析时,判断文件类型,并根据不同的数据类型把业务数据放入到不同的数据库中,健康一体机发送的文件数据中带有时间戳,表示文件数据产生的时间,TCP协议服务器端根据时间戳判断是否重复接收了体检数据,如果确定重复接收的数据则放弃该数据;如果不是,则解析新接收的数据并入库,完成业务数据解析入库后,返回OK信号给健康一体机。