本发明涉及通信,更具体地说,它涉及基于tcp的上位设备和嵌入设备交互的通信方法及系统。
背景技术:
1、在工控领域,上位设备和嵌入设备之间的通信一般是用固定长度的数据包协议格式进行交互,对数据的长度和格式有很大的限制,不便于数据的扩展,在业务层面,交互的数据格式也不便于理解,这样对于开发人员造成了很多不便;另外,在某些业务场景下,上位设备向嵌入设备发送一个请求命令数据包后,需要等待嵌入设备执行请求命令的响应结果,这种固定长度的数据格式里因为不能识别出原请求数据包,则嵌入设备执行的响应结果就不能找到对应的请求原始数据,从而导致上位设备的请求不能获取到响应结果。
技术实现思路
1、本发明的目的在于提供基于tcp的上位设备和嵌入设备交互的通信方法及系统,以解决上述背景技术中存在的问题。
2、本发明的上述技术目的是通过以下技术方案得以实现的:
3、第一方面,本申请实施例提供了基于tcp的上位设备和嵌入设备交互的通信方法,应用于上位设备对应的服务端与嵌入设备对应的客户端之间的交互;该方法包括以下步骤:
4、客户端生成并发送连接请求到服务端,服务端基于连接请求与客户端之间建立tcp长连接;
5、客户端创建请求数据包,并将请求数据包通过建立的tcp长连接传输至服务端,请求数据包包括第一固定包头和请求数据;
6、服务端根据请求数据包的格式解析得到请求数据包,并从第一固定包头中得到请求数据包的请求包类型和包序列号;
7、服务端基于请求数据包的请求包类型,对请求数据包中的请求数据进行处理得到处理结果,并根据请求数据包的包序列号创建响应数据包,响应数据包包括第二固定包头和响应数据,响应数据为对应请求数据的处理结果;
8、客户端接收服务端发送的响应数据包,并根据第二固定包头确认是否为响应数据包对应的响应包类型,若确定当前响应数据包为响应包类型,从第二固定包头中获取响应数据包的包序列号;
9、若请求数据包的包序列号和响应数据包的包序列号相同或对应,客户端根据包序列号从预置的请求响应回调列表中获取回调方式,并通过回调方式将响应数据返回至客户端。
10、本发明的有益效果是:本方案中,利用此方式实现客户端与服务端之间的数据交互,客户端与服务端之间共同遵守包序列号的对应,即客户端在请求数据包中带上对应的包序列号,服务端在响应数据包中带上相同或对应的包序列号,在客户端在收到响应后,客户端根据响应数据包中的包序列号从请求响应回调列表中查找对应的结果回调方法,实现客户端获取到处理完成的响应数据;同时请求数据的长度在对应数据包中并不限制,可以利于数据的扩展,再者通过规定的数据包格式,即固定包头后接请求数据或响应数据,便于人员的理解;并且利用相同或对应的包序列号,可以实现嵌入设备在执行响应结果后能够轻易的找到对应的请求原始数据,解决了上位设备的请求不能获取到响应结果的问题。
11、在上述技术方案的基础上,本发明还可以做如下改进。
12、进一步,上述第一固定包头或第二固定包头包括字节长度、数据包类型和包序列号。
13、进一步,上述响应数据包还包括响应状态码,响应状态码表征了服务端对请求数据的执行结果,执行结果包括执行成功和执行失败。
14、进一步,上述数据包类型包括心跳包类型、请求包类型、响应包类型、无响应类型、消息分发类型和无效包类型。
15、进一步,上述客户端利用异步响应处理线程接收服务端发送的响应数据包。
16、第二方面,本申请实施例提供了基于tcp的上位设备和嵌入设备交互的通信系统,应用于第一方面中任一项的基于tcp的上位设备和嵌入设备交互的通信方法,以及应用于上位设备对应的服务端与嵌入设备对应的客户端之间的交互;系统包括:
17、第一模块,用于通过客户端生成并发送连接请求到服务端,服务端基于连接请求与客户端之间建立tcp长连接;
18、第二模块,用于通过客户端创建请求数据包,并将请求数据包通过建立的tcp长连接传输至服务端,请求数据包包括第一固定包头和请求数据;
19、第三模块,用于通过服务端根据请求数据包的格式解析得到请求数据包,并从第一固定包头中得到请求数据包的请求包类型和包序列号;
20、第四模块,用于通过服务端基于请求数据包的请求包类型,对请求数据包中的请求数据进行处理得到处理结果,并根据请求数据包的包序列号创建响应数据包,响应数据包包括第二固定包头和响应数据,响应数据为对应请求数据的处理结果;
21、第五模块,用于通过客户端接收服务端发送的响应数据包,并根据第二固定包头确认是否为响应数据包对应的响应包类型,若确定当前响应数据包为响应包类型,从第二固定包头中获取响应数据包的包序列号;
22、第六模块,用于若请求数据包的包序列号和响应数据包的包序列号相同或对应,通过客户端根据包序列号从预置的请求响应回调列表中获取回调方式,并通过回调方式将响应数据返回至客户端。
23、进一步,上述第四模块中,响应数据包还包括响应状态码,响应状态码表征了服务端对请求数据的执行结果,执行结果包括执行成功和执行失败。
24、进一步,上述系统中,数据包类型包括心跳包类型、请求包类型、响应包类型、无响应类型、消息分发类型和无效包类型。
25、第三方面,本申请实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现第一方面中任一项的方法。
26、第四方面,一种非暂态计算机可读存储介质,非暂态计算机可读存储介质存储计算机指令,计算机指令使计算机执行第一方面中任一项的方法。
27、与现有技术相比,本发明至少具有以下的有益效果:
28、在本申请中,利用此方式实现客户端与服务端之间的数据交互,客户端与服务端之间共同遵守包序列号的对应,即客户端在请求数据包中带上对应的包序列号,服务端在响应数据包中带上相同或对应的包序列号,在客户端在收到响应后,客户端根据响应数据包中的包序列号从请求响应回调列表中查找对应的结果回调方法,实现客户端获取到处理完成的响应数据;同时请求数据的长度在对应数据包中并不限制,可以利于数据的扩展,再者通过规定的数据包格式,即固定包头后接请求数据或响应数据,便于人员的理解;并且利用相同或对应的包序列号,可以实现嵌入设备在执行响应结果后能够轻易的找到对应的请求原始数据,解决了上位设备的请求不能获取到响应结果的问题。
1.基于tcp的上位设备和嵌入设备交互的通信方法,应用于上位设备对应的服务端与嵌入设备对应的客户端之间的交互;其特征在于,所述方法包括以下步骤:
2.根据权利要求1所述的基于tcp的上位设备和嵌入设备交互的通信方法,其特征在于,所述第一固定包头或所述第二固定包头包括字节长度、数据包类型和包序列号。
3.根据权利要求1所述的基于tcp的上位设备和嵌入设备交互的通信方法,其特征在于,所述响应数据包还包括响应状态码,所述响应状态码表征了服务端对所述请求数据的执行结果,所述执行结果包括执行成功和执行失败。
4.根据权利要求2所述的基于tcp的上位设备和嵌入设备交互的通信方法,其特征在于,所述数据包类型包括心跳包类型、请求包类型、响应包类型、无响应类型、消息分发类型和无效包类型。
5.根据权利要求1所述的基于tcp的上位设备和嵌入设备交互的通信方法,其特征在于,所述客户端利用异步响应处理线程接收服务端发送的响应数据包。
6.基于tcp的上位设备和嵌入设备交互的通信系统,应用于权利要求1-5中任一项所述的基于tcp的上位设备和嵌入设备交互的通信方法,以及应用于上位设备对应的服务端与嵌入设备对应的客户端之间的交互;其特征在于,所述系统包括:
7.根据权利要求6所述的基于tcp的上位设备和嵌入设备交互的通信系统,其特征在于,所述第四模块中,所述响应数据包还包括响应状态码,所述响应状态码表征了服务端对所述请求数据的执行结果,所述执行结果包括执行成功和执行失败。
8.根据权利要求6所述的基于tcp的上位设备和嵌入设备交互的通信系统,其特征在于,所述系统中,所述数据包类型包括心跳包类型、请求包类型、响应包类型、无响应类型、消息分发类型和无效包类型。
9.一种电子设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现权利要求1-5中任一项所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,计算机指令使计算机执行权利要求1-5中任一项所述的方法。