掌桥专利:专业的专利平台
掌桥专利
首页

一种数据传输方法和相关设备

文献发布时间:2024-04-18 19:58:21


一种数据传输方法和相关设备

技术领域

本申请实施例涉及通信领域,尤其涉及一种数据传输方法和相关设备。

背景技术

发布/订阅模式是一种低开销、低带宽占用的即时通信模式。在客户端连接到服务端后,客户端可以通过向服务端发布消息和订阅主题(topic)实现信息的交互。

客户端在与服务端建立连接后,才能通过发布/订阅的模式与服务端交换信息。一种常用的建立连接的方法是人工在客户端上配置服务端的IP地址,从而实现客户端与服务端之间的连接。

但是,人工配置的连接方式效率低下,成本高昂,因此亟需一种自动连接的方式代替人工配置。

发明内容

本申请实施例提供了一种数据传输方法和相关设备,用于实现客户端与服务端之间的自动连接。

第一方面,本申请实施例提供了一种数据传输方法,包括:第一服务端发送目标报文,目标报文包括第一服务端的服务端信息;其中,服务端信息用于指示第一服务端的地址。然后,第一服务端接收来自客户端的接入请求报文,接入请求报文的目的地址为第一服务端的地址,接入请求报文用于请求建立客户端与第一服务端之间的连接。然后,第一服务端就可以根据接入请求报文向客户端发送接入响应报文,从而实现第一服务端与客户端之间的连接。

在本申请实施例中,通过服务端目标报文向客户端发送服务端的服务端信息,从而向客户端指示服务端的地址。客户端根据目标报文即可确定服务端的地址,从而向服务端发送接入请求报文,实现与服务端之间的自动连接。该方法不需要人工在客户端上配置服务端的地址,简化了服务端与客户端建立连接的流程,从而提升了客户端与服务端建立连接的效率。

在一种可选的实现方式中,可以通过目标端口发送目标报文。其中,目标端口用于传输目标报文类型的目标报文;目标报文类型的目标报文用于向客户端指示第一服务端的地址。

可选的,目标报文类型可以是本申请实施例新定义的消息队列遥测传输协议(message queuing telemetry transport,MQTT)的发现(DISCOVER)报文的类型。发现报文用于向客户端指示服务端的地址。

在本申请实施例中,目标端口为约定好的用于传输目标报文的端口,服务端和客户端通过约定端口来实现目标报文的收发,客户端从目标端口上接收的报文均可认为是目标报文,客户端确定报文类型的方式简便快捷。

在一种可选的实现方式中,目标报文中还包括目标报文类型标识。目标报文类型标识用于指示目标报文的报文类型为目标报文类型。

在本申请实施例中,客户端可以通过目标报文标识来确定报文与目标端口传输的报文类型是否匹配。从而防止目标端口上传输的非约定类型(非目标报文类型)的报文被客户端处理从而出现错误,提升客户端的处理效率。

在一种可选的实现方式中,目标报文还包括目标报文类型验证标识,目标报文类型验证标识用于客户端验证目标报文类型标识的合法性。

在本申请实施例中,通过目标报文类型验证标识来验证目标报文类型标识的合法性,从而确定目标报文是否有误,若有误则丢弃目标报文,从而防止客户端处理错误的报文,提升客户端的处理效率。

在一种可选的实现方式中,目标报文可以为消息队列遥测传输协议MQTT的控制报文,目标报文类型标识可以为目标报文的固定头上的报文类型字段,该报文类型字段的取值为0。

在本申请实施例中,定义当前MQTT协议中保留的“0”类报文,将报文类型字段取值为0的报文称为发现(DISCOVER)报文,发现报文用于服务端向客户端指示服务端的地址。实现了对当前MQTT协议的扩展,基于当前的MQTT协议,通过发现报文,实现了服务端地址到客户端的自动配置,从而实现客户端与服务端之间的自动连接。

在一种可选的实现方式中,目标报文还包括操作类型标识,操作类型标识用于指示客户端向第一服务端发送接入请求报文。

在本申请实施例中,通过操作类型标识来指示客户端不同的操作类型,以此将客户端分为两大类进行管理,一类从未连接过服务端,一类已连接服务端。从而服务端可以较为灵活管理其中部分客户端,也可以灵活更换地址信息。

在一种可选的实现方式中,操作类型标识可以包括接入标识,接入标识用于指示未连接服务端的客户端向第一服务端发送接入请求报文。

在本申请实施例中,接入标识用于指示未接入服务端的客户端接入第一服务端,从而使客户端连接至服务端,受服务端管理。

在一种可选的实现方式中,操作类型标识可以包括更新标识,更新标识用于指示连接第二服务端的客户端建立与第一服务端之间的连接;或者,用于指示未连接服务端的客户端建立与第一服务端之间的连接。

在本申请实施例中,更新标识可以指示未连接服务端的客户端接入发布/订阅网络,或者也可以指示客户端更新连接的服务端。

在一种可选的实现方式中,目标报文为消息队列遥测传输协议MQTT的控制报文,操作类型标识在目标报文的可变头上。

在一种可选的实现方式中,第一服务端可以广播目标报文。

在本申请实施例中,第一服务端通过广播的方式,在第一服务端所处的网段中发送目标报文,可以降低通信资源的消耗。

在一种可选的实现方式中,服务端信息包括第一服务端的IP地址,目标报文还包括IP地址类型标识,IP地址类型标识用于指示客户端从目标报文中读取目标长度的第一服务端的IP地址。

在本申请实施例中,通过IP地址类型标识指示IP地址的目标长度,客户端需要根据该IP地址类型标识确定读取IP地址的长度,保证读取的IP地址的准确性。

在一种可选的实现方式中,第一服务端的IP地址的类型为IPv4,目标长度为4字节;或者,第一服务端的IP地址的类型为IPv6,目标长度为16字节。

第二方面,本申请实施例提供了一种数据传输方法,该方法包括:客户端接收来自第一服务端的目标报文。其中,目标报文包括第一服务端的服务端信息,服务端信息用于指示第一服务端的地址。然后,客户端可以向第一服务端发送接入请求报文。接入请求报文的目的地址为第一服务端的地址,接入请求报文用于请求建立客户端与第一服务端之间的连接。然后,客户端可以接收来自第一服务端的接入响应报文。

第二方面的有益效果参见第一方面,此处不再赘述。

在一种可选的实现方式中,客户端通过目标端口接收来自第一服务端的目标报文。其中,目标端口用于传输目标报文类型的目标报文,目标报文类型的目标报文用于向客户端指示第一服务端的地址。

在一种可选的实现方式中,目标报文还包括目标报文类型标识。客户端可以根据目标报文中的目标报文类型标识,确定目标报文的报文类型为目标报文类型。客户端可以根据目标报文的报文类型为目标报文类型,从目标报文中读取服务端信息。然后,客户端可以根据服务端信息确定第一服务端的地址。

在一种可选的实现方式中,目标报文还包括目标报文类型验证标识。客户端根据目标报文中的目标报文类型验证标识,验证目标报文类型标识的合法性。

在一种可选的实现方式中,目标报文为消息队列遥测传输协议MQTT的控制报文。目标报文类型标识为目标报文的固定头上的报文类型字段,报文类型字段的取值为0。

在一种可选的实现方式中,目标报文还包括操作类型标识。客户端可以根据操作类型标识,向第一服务端发送接入请求报文。

在一种可选的实现方式中,操作类型标识包括接入标识。未连接服务端的客户端可以根据接入标识,向第一服务端发送接入请求报文。

在一种可选的实现方式中,操作类型标识包括更新标识。连接第二服务端的客户端可以根据更新标识,建立与第一服务端之间的连接。或者,未连接服务端的客户端可以根据更新标识,建立与第一服务端之间的连接。

在一种可选的实现方式中,目标报文为消息队列遥测传输协议MQTT的控制报文,操作类型标识在目标报文的可变头上。

在一种可选的实现方式中,服务端信息包括第一服务端的IP地址,目标报文还包括IP地址类型标识。客户端可以根据IP地址类型标识,从目标报文中读取目标长度的第一服务端的IP地址。

在一种可选的实现方式中,第一服务端的IP地址的类型为IPv4,目标长度为4字节。或者,第一服务端的IP地址的类型为IPv6,目标长度为16字节。

第三方面,本申请实施例还提供了一种服务端,该服务端为第一方面所述的服务端,该第一服务端用于执行第一方面所述的数据传输方法。

第四方面,本申请实施例提供了一种服务端设备。该服务端设备包括处理器和存储器,处理器和存储器耦合。存储器用于存储程序;处理器用于执行存储器中的程序,使得服务端设备执行第一方面所述的数据传输方法。

可选的,服务端设备可以是服务器、计算版、芯片等设备。

第五方面,本申请实施例提供了一种客户端,该客户端用于执行第一方面所述的数据传输方法。

第六方面,本申请实施例提供了一种客户端设备,该客户端设备包括处理器和存储器,处理器和存储器耦合。存储器用于存储程序,处理器用于执行存储器中的程序,使得客户端执行第二方面所述的数据传输方法。

第七方面,本申请实施例提供了一种芯片。该芯片包括至少一个处理器和接口。接口用于为至少一个处理器提供程序指令或者数据。至少一个处理器用于执行程序指令,以实现第一方面或第二方面所述的方法。

第八方面,本申请实施例提供了一种计算机可读存储介质。该计算机可读存储介质存储有计算机程序,当该计算机程序被运行时,实现如第一方面或第二方面所述的方法。

第九方面,本申请实施例提供了一种计算机程序产品。该计算机程序产品包括计算机程序代码。当该计算机程序代码被运行时,实现第一方面或第二方面所述的方法。

附图说明

图1为本申请实施例的网络示意图;

图2为本申请实施例的光传输网络示意图;

图3为本申请实施例提供的数据传输方法的一个流程示意图;

图4为本申请实施例提供的操作类型为接入时的流程示意图;

图5a为本申请实施例提供的报文结构示意图;

图5b为本申请实施例提供的报文的固定头结构示意图;

图5c为本申请实施例提供的报文的可变头结构示意图;

图6a为本申请实施例提供的数据传输方法的一个应用场景示意图;

图6b为本申请实施例提供的在图6a场景下的操作类型为接入的示意图;

图7为本申请实施例提供的操作类型为更新时的流程示意图;

图8为本申请实施例提供的在图6a场景下的操作类型为更新的示意图;

图9为本申请实施例提供的服务端设备的结构示意图;

图10为本申请实施例提供的客户端设备的结构示意图。

具体实施方式

下面结合附图,对本申请的实施例进行描述。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,其目的在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。另外,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。

请参阅图1,在发布/订阅模式的通信网络中,包括客户端和服务端。多个客户端与服务端建立连接后,向服务端订阅相同的主题(topic)。某一订阅了主题的客户端(例如图1中的客户端1)向服务端发送消息后,订阅了该主题的其他客户端(例如图1中的客户端2和客户端n)即可从服务端获取该消息。

在光传输网络中,发布/订阅模式的通信网络的一种示例如图2所示。远端管理平台上的服务器上运行着服务端,与远端管理平台连接的网关设备上运行着客户端。网关设备与电脑、机顶盒等用户设备连接,为用户设备提供应用服务。可选的,网关设备可以通过光线路终端(optical line terminal,OLT)接入远端管理平台。

在本申请实施例中,远端管理平台用于管理与控制客户端设备。远端管理平台可以通过订阅/发布协议,远程管理客户端的行为、获取客户端本身以及客户端采集的相关数据、远程升级客户端软件等。可选的,远端管理平台可以是网络管理中心;远端管理平台也可以也可以是订阅了相关主题(topic)的客户端,与其他的客户端进行消息交换等,本申请对此不做限定。

可选的,在图2所示的光传输网络中,除了远端管理平台上的服务器,服务端也可以运行在其他的设备上,例如计算板、私有云、普通物理服务器等,本申请对此不做限定。

可选的,图2中的网关设备可以是交换机、路由器、支持二、三层网络协议的设备等,本申请对此不做限定。图2中所示的用户设备,也可以是手机、穿戴设备等,本申请对此不做限定。

可选的,在图2所示的光传输网络中,除了网关设备,客户端也可以运行在其他网络硬件设备上,例如监控器、温度传感设备、智能水表上等,本申请对此不做限定。

可选的,除了图2所示的光传输网络,发布/订阅模式的通信网络也可以在其他网络上实现。例如在监控网络中,服务端可以运行在服务器、计算中心、私有云、公有云等设备上,客户端可以运行在监控器设备上。

可选的,图1或图2所示的网络中,可以通过传输队列遥测传输协议MQTT的报文,实现发布/订阅模式的消息传输。即,图1或图2所示的网络中,服务端可以是MQTT服务端、客户端可以是MQTT客户端。

可选的,除了MQTT,也可以通过其他方式实现发布/订阅模式的消息传输,例如数据分发服务(data distribution service for real-time systems,DDS)协议、高级消息队列协议(advanced message queuing protocol,AMQP)等,本申请对此不做限定。

在图1或图2所示的网络中,客户端与服务端建立连接后,才能通过上述发布/订阅模式实现消息的传输。为了建立客户端与服务端的连接,客户端需要获取服务端的地址(例如IP地址)。一种常用的建立连接的方法是人工在客户端上配置服务端的地址,从而实现客户端与服务端之间的连接。但是这种方式效率低下、成本高昂。

本申请实施例提供了一种数据传输方法和相关设备,由服务端向客户端通知服务端的地址,从而实现客户端与服务端之间的自动连接。如图3所示,本申请实施例提供的数据传输方法包括:

301、第一服务端发送目标报文,目标报文包括第一服务端的服务端信息,服务端信息用于指示第一服务端的地址。

第一服务端可以通过目标报文中的服务端信息,向客户端指示第一服务端的地址。

可选的,服务端信息可以包括第一服务端的互联网(internet protocol,IP)地址、媒体存储控制位(media access control,MAC)地址、厂商信息等,本申请对此不做限定。

302、第一服务端接收来自客户端的接入请求报文。

客户端根据目标报文中的服务端信息,可以确定第一服务端的地址。根据服务端信息,客户端可以直接或间接确定第一服务端的地址。例如,客户端可以直接读取目标报文中所包括的第一服务端的IP地址或MAC地址。或者,客户端可以根据目标报文中所包括的第一服务端的IP地址和厂商信息,确定第一服务端的端口号,从而确定第一服务端的IP地址和端口号。

可选的,目标报文中还可以携带认证信息,只有认证通过的客户端才能处理该目标报文,从而使得服务端可以管理认证通过的指定设备(客户端设备)。例如,厂商信息或认证信息可以包括厂商的组织唯一标识符(organizationally unique identifier,OUI),客户端可以只处理包括自己厂商OUI的目标报文,使得MQTT服务端可以只管理自己厂商的设备。

确定了第一服务端的地址,客户端即可向第一服务端发送接入请求报文。接入请求报文的目的地址为第一服务端的地址,接入请求报文用于请求建立与第一服务端的连接。相应的,第一服务端可以接收来自客户端的接入请求报文。

303、第一服务端根据接入请求报文,向客户端发送接入响应报文。

第一服务端根据接入请求报文,向客户端发送接入响应报文,从而完成第一服务端与客户端之间的连接。

在本申请实施例中,第一服务端发送目标报文,通过目标报文中的服务端信息向客户端指示第一服务端的地址,从而实现在客户端上配置服务端的地址,完成服务端与客户端之间的连接。该方法可以通过客户端和服务端自动建立连接,不需要人工在客户端上配置服务端的地址,提升了配置服务端地址和建立连接的效率。

本申请实施例所述的数据传输方法可以应用于MQTT协议,下文说明本申请实施例提供的数据传输方法在MQTT协议中的应用。值得注意的是,除了MQTT协议,本申请实施例提供的数据传输方法也可以应用于其他协议,本申请对此不做限定。如图4所示,本申请实施例提供的数据传输方法包括:

401、客户端启动后,打开目标端口。

在本申请实施例中,定义MQTT协议的一种新的报文类型:发现(DISCOVER)报文。发现报文用于向客户端指示服务端的地址。在本申请实施例中,发现(DISCOVER)报文的类型也称为目标报文类型。

在本申请实施例中,可以约定目标端口用于传输发现报文。因此,在客户端启动后,客户端就可以打开(listening)目标端口,以通过目标端口接收发现报文,根据目标端口上接收的发现报文获取服务端的地址。在本申请实施例中,该约定端口也称为目标端口。

在本申请实施例中,不限定目标端口的类型,目标端口可以是安全传输层协议(transport layer security,TLS)端口,例如8884端口;也可以是非安全传输层协议(non-transport layer security,non-TLS)端口,例如1884端口,本申请实施例对此不做限定。可选的,通过TLS端口传输发现报文,可以防止发现报文被篡改,提升网络安全性。

402、第一服务端通过目标端口发送目标报文。

上面已说明,目标端口用于传输发现报文。第一服务端启动后,第一服务端可以通过目标端口发送目标报文。目标报文为发现报文,目标报文中的服务端信息用于指示第一服务端的地址。因此第一客户端可以通过目标报文向客户端指示第一服务端的地址。

如图5a所示,目标报文可以包括控制包类型标识、控制包类型验证标识、IP地址类型、操作类型标识、第一服务端的IP地址等信息。

其中,控制包类型标识(control packet type)用于指示目标报文的报文类型。在MQTT协议中,控制包类型标识为MQTT控制包的固定头(fix header)上的报文类型字段。如图5b所示,该报文类型字段为固定头上的第4至第7比特位。在MQTT协议中,通过报文类型字段的取值来表示报文的类型。本申请实施例中的发现(DISCOVER)报文的报文类型字段的取值为0。在本申请实施例中,取值为0的报文类型字段也称为目标报文类型标识。

其中,控制包类型验证标识(flags of control packet type)用于验证报文类型标识的合法性。

其中,IP地址类型用于指示发现(DISCOVER)报文中所携带的服务端的IP地址的类型。示例的,该IP地址可以是IPv4或IPv6等协议的地址,本申请对此不做限定。

其中,操作类型标识用于表示发现(DISCOVER)报文指示客户端进行的操作类型,例如接入、更新等,本申请对此不做限定。

可选的,除了第一服务端启动,也可以通过其他机制触发第一服务端发送目标报文。例如,第一服务端可以定时发送目标报文,定时发送的时间间隔示例地可以为1分钟、5分钟等,本申请对此不做限定。或者,客户端启动后,可以广播上线消息,服务端接收到上线消息,向该客户端发送目标报文等,本申请对此不做限定。

可选的,第一服务端可以向同网段的客户端广播目标报文,以减少通信资源的消耗。或者,第一服务端也可以向同网段的客户端逐个发送目标报文,本申请对此不做限定。

403、客户端根据目标报文中的报文类型验证标识,确定目标报文中的报文类型标识是否合法;若不合法,则执行步骤404;若合法,则执行步骤405。

为了避免MQTT控制包出现错误等,MQTT协议中设置控制包类型验证标识,以验证控制包类型标识的合法性。发现报文中的控制包类型验证标识用于验证发现报文类型标识的合法性。发现报文中的控制包类型验证标识也称为目标报文类型验证标识,在发现报文中的固定头(fix header)上,具体位置参见图5a和图5b。

可选的,如图5b所示,可以设置目标报文类型验证标识的取值为0。客户端读取目标报文中的控制包类型验证标识,当确定取值为0时,确定该发现报文的控制包类型(即报文类型字段)合法,反之则不合法。值得注意的是,取值为0仅是一个示例,发现报文的控制包类型验证标识的取值也可以是其他数值,此处不做限定。

404、客户端忽略目标报文。

若客户端确定目标报文中的控制包类型验证标识不合法,则说明MQTT控制包被篡改、冒用等,因此客户端忽略该目标报文。

405、客户端根据目标报文中的报文类型标识,确定目标报文为发现报文。

客户端读取目标报文的报文类型字段,若该字段的取值为0,则客户端可以确定目标报文为发现报文,执行步骤406及之后的步骤。若该字段的取值不为0,则说明目标报文有误,执行步骤404。

值得注意的是,取值为0仅是一个示例,发现报文的控制包类型标识的取值也可以是其他数值,此处不做限定。

406、客户端确定目标报文中的操作类型标识为接入。

如图5a所示,在目标报文中,可变头(variable header)上可以包括操作类型标识,用于表示发现报文指示客户端进行的操作类型,例如接入、更新等。操作类型标识在发现报文中的具体位置参见图5a或图5c。

可选的,如图5c所示,在发现报文的可变头上包括操作类型字段,该字段的取值用于表示该发现报文的操作类型。例如,可以设置接入类型所对应的取值为0。服务端读取目标报文的操作类型字段,确定其取值为0时,则可以确定该目标报文的操作类型标识为接入。

407、客户端确定是否未连接服务端;若已连接,则执行步骤404,若未连接,则执行步骤408。

408、客户端根据目标报文中的IP地址类型标识,确定第一服务端的IP地址的目标长度。

如图5a所示,发现报文的可变头中还包括IP地址类型标识,用于表示第一服务端的IP地址类型。可选的,该IP地址类型可以是IPv4协议或IPv6协议的IP地址类型,或者未来可能出现的协议的IP地址类型。每种IP地址都有对应的长度,例如IPv4类型的IP地址的长度为4字节,IPv6类型的IP地址的长度为16字节。在本申请实施例中,该长度称为目标长度。

409、客户端读取目标长度的IP地址。

确定了目标长度,客户端则可以从目标报文的对应位置上(即图5a和图5b所示的第一服务端的IP地址的位置上)读取目标长度的IP地址,该IP地址为第一服务端的IP地址。

410、客户端向第一服务端发送接入请求报文。

411、第一服务端向客户端发送接入响应报文。

步骤410和步骤411参见图2所示实施例的步骤202和203,此处不再赘述。

可选的,一个MQTT服务端可能通过多个网卡,在多个网段中通信,则MQTT服务器可以在多个网段中分别发送目标报文,实现与不同网段上的客户端的连接。例如图6a所示,MQTT服务端(即前述第一服务端)通过网卡1与192.168.1网段内的设备通信,通过网卡2与192.168.2网段内的设备通信。假设192.168.1网段内的客户端1和客户端2均未连接服务端,192.168.2网段内的客户端3连接了MQTT服务端2(第二服务端)。MQTT服务端1(第一服务端)可以通过网卡1在192.168.1网段内发送目标报文,报文中的服务端信息用于指示MQTT服务端1在192.168.1网段内的地址。MQTT服务端1(第一服务端)可以通过网卡2在192.168.2网段内发送目标报文,报文中的服务端信息用于指示MQTT服务端1在192.168.2网段内的地址。

如图6b所示,上述向不同网段发送的目标报文中,操作类型标识均为接入(即操作类型字段的取值均为0)。由于客户端1和客户端2均未连接服务端,因此接收到目标报文后,在图2所示的步骤202和图4所示的步骤410中,客户端1和客户端2可以向网卡1发送接入请求报文。该接入请求报文的目的地址为MQTT服务端1在192.168.1网段内的地址,用于请求接入MQTT服务端1。

由于客户端3已经连接了MQTT服务端2(第二服务端),因此接收到目标报文后,在图4所示的步骤407中,确定已经连接了服务器,执行步骤404(忽略目标报文)。

可选的,发现报文的操作类型还可以包括更新,接下来结合图7说明更新情况下的操作流程,具体包括:

701、客户端启动后,打开目标端口。

702、第一服务端通过目标端口发送目标报文。

703、客户端根据目标报文中的目标报文类型验证标识,确定目标报文中的报文类型标识是否合法;若不合法,则执行步骤704;若合法,则执行步骤705。

704、客户端忽略目标报文。

705、客户端根据目标报文中的报文类型标识,确定目标报文为发现报文。

客户端读取目标报文的报文类型字段,若该字段的取值为0,则客户端可以确定目标报文为发现报文,执行步骤706及之后的步骤。若该字段的取值不为0,则说明目标报文有误,执行步骤704。

值得注意的是,取值为0仅是一个示例,发现报文的控制包类型标识的取值也可以是其他数值,此处不做限定。

706、客户端确定目标报文中的操作类型标识为更新。

可选的,可以设置更新类型所对应的取值为1。服务端读取目标报文的操作类型字段,确定其取值为1时,则可以确定该目标报文的操作类型标识为更新。

707、客户端根据目标报文中的IP地址类型标识,确定第一服务端的IP地址的目标长度。

708、客户端读取目标长度的IP地址。

步骤707至708参见图4所示实施例的步骤408至409,此处不再赘述。

709、客户端判断目标报文中的IP地址与已连接的服务端的IP地址是否相同;若相同,则执行步骤704,若不同,则执行步骤710。

在步骤708中,客户端读取了目标报文中的IP地址(即第一服务端的IP地址),若客户端已经连接了服务端,则客户端可以判断目标报文中的IP地址(第一服务端的IP地址)与已连接的服务端的IP地址是否相同。若IP地址相同,那么客户端不需要进行更新(重新建立与第一服务端的连接),于是执行步骤704,忽略目标报文。若IP地址不相同,说明目标报文指示客户端更新的服务端与客户端已连接的服务端不同,客户端可以根据目标报文更新连接的服务端,即建立与第一服务端的连接,从而执行步骤710至711。

在客户端未连接服务端的情况下,在步骤709中,客户端可以确定客户端未连接服务端,从而确定执行步骤710和711。

可选的,在步骤706确定了操作类型为更新后(或者在步骤706之前/与步骤706同时),客户端也可以先确定客户端是否连接了服务端,若未连接服务端,则直接执行步骤707及之后的步骤。由于客户端未连接服务端,因此不需要执行步骤709、712和713。

710、客户端向第一服务端发送接入请求报文。

711、第一服务端向客户端发送接入响应报文。

步骤710至711参见图4所示实施例的步骤410至411,此处不再赘述。

712、客户端确定是否连接第二服务端,若已连接,则执行步骤713。

可选地,若客户端连接了第二服务端(第二服务端与第一服务端不是同一个服务端),则客户端可以根据(操作类型标识为更新的)目标报文断开与第二服务端的连接,执行步骤713。

713、客户端向第二客户端发送断开连接请求报文。

客户端通过向第二服务端发送断开连接请求报文,请求断开于第二服务端之间的连接。

例如,若第二服务端将要切换地址,为了减小业务中断的时长(即服务端与客户端断连的时长),可以启动第一服务端,并由第一服务端向客户端发送目标报文(操作类型为更新),使原来与第二服务端连接的客户端与第一服务端连接。从而在第二服务端切换前,使与第二服务端连接的客户端与第一服务端连接,通过第一服务端来管理这些客户端。从在完成服务端切换的同时不中断业务。

在操作类型为1(更新)的情况下,不同波段的客户端可以根据目标报文确定第一服务端在对应波段上的地址,从而更新客户端所连接的服务端。例如,以图6a中的连接关系为基础,在目标报文中的操作类型为更新的情况下,具体情况如图8所示。MQTT服务端1向不同网段发送的目标报文中,操作类型标识均为更新。

如图8所示,上述向不同网段发送的目标报文中,操作类型标识均为更新(即操作类型字段的取值均为1)。由于客户端1和客户端2均未连接服务端,因此接收到目标报文后,在图7所示的步骤707中,客户端1和客户端2可以确定未连接第一服务端,从而在步骤710中向网卡1发送接入请求报文。该接入请求报文的目的地址为MQTT服务端1在192.168.1网段内的地址,用于请求接入192.168.1网段内的MQTT服务端1。

由于客户端3已经连接了MQTT服务端2(第二服务端),因此接收到目标报文后,在图4所示的步骤407中,客户端3可以确定未连接第一服务端,从而在步骤710中向网卡3发送接入请求报文。该接入请求报文的目的地址为MQTT服务端1在192.168.2网段内的地址,用于请求接入192.168.3网段内的MQTT服务端1。可选的,在步骤707后,客户端3可以根据操作类型标识为更新,执行步骤712和713,从而断开与第二服务端(MQTT服务端2)的连接。

请参阅图9,本申请实施例还提供了一种服务端设备900,包括处理器910和存储器920,处理器910与存储器920耦合。存储器920用于存储程序。处理器910用于执行存储器920中的程序,使得服务端设备900执行前述图3至图8中任一实施例中服务端执行的动作,从而实现对应的数据传输方法。

请参阅图10,本申请实施例还提供了一种客户端设备1000,包括处理器1010和存储器1020,处理器1010与存储器1020耦合。存储器1020用于存储程序。处理器1010用于执行存储器1020中的程序,使得客户端设备1000执行前述图3至图8中任一实施例中客户端执行的动作,从而实现对应的数据传输方法。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

相关技术
  • 数据传输方法、数据传输反馈方法和相关设备
  • 一种数据传输方法、相关设备及系统
  • 一种数据传输控制方法以及相关设备
  • 一种数据传输方法、通信设备和数据传输系统
  • 一种数据传输方法、装置、系统、网络设备及用户设备
  • 一种混合数据传输方法、数据传输方法及相关设备
  • 一种混合数据传输方法、数据传输方法及相关设备
技术分类

06120116484819