设备与服务器之间的通信方法及系统与流程

文档序号:25743139发布日期:2021-07-06 18:54阅读:295来源:国知局
设备与服务器之间的通信方法及系统与流程
本发明涉及通信
技术领域
,更具体地,涉及一种设备与服务器之间的通信方法及系统。
背景技术
:mt2621是联发科技发布的支持nb-iot(窄带物联网)规格的双模物联网芯片(soc)系统。该芯片系统支持nb-iot及gsm/gprs两种网络模式,具有低功耗和低成本的优势,能够应用在可穿戴设备、物联网安全设备、智能电表及各种工业应用上。而如何使该设备与服务器之间进行稳定、低功耗的通讯就成了一个重要的问题。技术实现要素:为了解决上述问题,本发明实施例提供一种克服上述问题或者至少部分地解决上述问题的一种设备与服务器之间的通信方法及系统。根据本发明实施例的第一方面,提供一种设备与服务器之间的通信方法,包括:与目标服务器之间建立链接,并向所述目标服务器发送消息发送队列中的消息;若在预设时间段内接收到所述目标服务器发送的数据,则对所述数据进行解包处理,获取解包处理后的数据;若判断得知解包处理后的数据类型为请求类型,则将与所述数据对应的应答消息添加到所述消息发送队列中;若判断得知解包处理后的数据类型为回答类型,且所述消息和所述数据的信息流水号相同,则将所述消息从所述消息发送队列中删除。优选地,还包括:若未在所述预设时间段内接收到所述目标服务器发送的数据,则查询所述消息发送队列;若所述消息发送队列中存在目标消息,则向所述目标服务器发送所述目标消息。优选地,所述若判断得知解包处理后的数据类型为请求类型,则将与所述数据对应的应答消息添加到所述消息发送队列中,包括:若判断得知解包处理后的数据类型为请求类型,且所述消息发送队列中的数据已满,则将与所述数据对应的应答消息覆盖掉所述消息发送队列中最旧的一条数据。优选地,所述消息的信息流水号是唯一的,所述数据的信息流水号是唯一的。优选地,所述与目标服务器之间建立链接,包括:绑定与所述目标服务器的地址;与所述目标服务器之间建立udp连接。优选地,所述消息和所述数据的消息结构包括消息头和消息体,所述消息头为公共包头,所述消息体为消息内容。优选地,所述消息体包括消息总长度、连续报数、主命令或响应类型、子命令字和消息流水号。根据本发明实施例提供的第二方面,本发明实施例提供一种设备与服务器之间的通信系统,包括:发送模块,用于与目标服务器之间建立链接,并向所述目标服务器发送消息发送队列中的消息;解包模块,用于若在预设时间段内接收到所述目标服务器发送的数据,则对所述数据进行解包处理,获取解包处理后的数据;第一判断模块,用于若判断得知解包处理后的数据类型为请求类型,则将与所述数据对应的应答消息添加到所述消息发送队列中;第二判断模块,用于若判断得知解包处理后的数据类型为回答类型,且所述消息和所述数据的信息流水号相同,则将所述消息从所述消息发送队列中删除。根据本发明实施例提供的第三方面,本发明实施例提供一种电子设备,该电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现如第一方面提供的设备与服务器之间的通信方法。根据本发明实施例提供的第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面提供的设备与服务器之间的通信方法。本发明实施例提供的一种设备与服务器之间的通信方法及系统,对设备与目标服务器的通讯业务建立了单独的任务,不影响整个设备的其它功能模块任务的运行,其它模块又可以通过专用的接口将需要发送的消息添加到消息发送队列。消息发送队列中的消息都有统一的数据格式,每条消息都有唯一的消息流水号,设备发送的强求类型(request)消息和收到的回答类型(response)消息,流水号相同的情况下,发送队列中的request消息才会被删除,这样能确保每条消息都发送成功。本发明实施例中,设备与目标服务器的通讯任务能单独保留,用于响应目标服务器下发的请求消息,这能降低设备的功耗。由于创建了单独的发送队列,其他功能模块能方便的将需要发送的定位、设备等信息添加到发送队列中,同时队列也能确保消息的成功发送。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。图1为本发明实施例提供的一种设备和服务器之间通信方法的流程图;图2为本发明一优选实施例提供的一种设备与服务器之间的通信方法的流程图;图3为本发明实施例提供的一种设备与服务器之间的通信系统的结构示意图;图4为本发明实施例提供的一种电子设备的结构示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”、“轴向”、“径向”、“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接或彼此可通讯;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。现有技术中设备的通讯方式没有单独的消息发送队列和服务器之间的应答检查,并不能保证每次通讯数据的发送成功,本发明实施例中采取了独立运行task任务管理与服务器之间的数据通信,并为数据的发送创建了单独缓冲队列,只有收到服务器的响应后,队列中的相应数据才会删除,以确保数据的发送成功。本发明实施例提供一种设备和服务器之间通信方法,如图1所示,该方法包括:110,与目标服务器之间建立链接,并向所述目标服务器发送消息发送队列中的消息;120,若在预设时间段内接收到所述目标服务器发送的数据,则对所述数据进行解包处理,获取解包处理后的数据;130,若判断得知解包处理后的数据类型为请求类型(request),则将与所述数据对应的应答消息添加到所述消息发送队列中;140,若判断得知解包处理后的数据类型为回答类型(response),且所述消息和所述数据的信息流水号相同,则将所述消息从所述消息发送队列中删除。此处的设备可以包括移动设备,也可以包括其它具有通信功能的非移动设备,比如电脑、嵌入式通信设备等。设备和目标服务器之间建立通信连接,通信连接的方式有很多种,包括tcp、udp等,本发明实施例中以建立udp连接为例进行说明。建立udp连接之后,基于消息发送队列,向目标服务器发送消息发送队列中的消息。通过监听程序对目标设备进行监听,如果在预设时间段内能接收到目标服务器发送过来的数据,则对该数据进行解包处理,得到解包处理后的数据。为了确定该数据是目标服务器的应答数据还是单独的请求数据,首先需要对该数据的数据类型进行判断,如果判断得出该数据是请求类型,则说明目标服务器发送的数据并不是针对前面发送的消息的,那么找到与该数据对应的应答消息,并将该应答消息添加到消息发送队列中。如果判断得出该数据是回答类型,则说明目标服务器发送的数据是回复该消息的,那么就不用再次向目标服务器发送该消息了,则将消息发送队列中的该消息删除,以免误删。本发明实施例提供的一种设备与服务器之间的通信方法及系统,对设备与目标服务器的通讯业务建立了单独的任务,不影响整个设备的其它功能模块任务的运行,其它模块又可以通过专用的接口将需要发送的消息添加到消息发送队列。消息发送队列中的消息都有统一的数据格式,每条消息都有唯一的消息流水号,设备发送的请求类型(request)消息和收到的回答类型(response)消息,信息流水号相同的情况下,发送队列中的request消息才会被删除,这样能确保每条消息都发送成功。本发明实施例中,设备与目标服务器的通讯任务能单独保留,用于响应目标服务器下发的请求消息,这能降低设备的功耗。由于创建了单独的消息发送队列,其他功能模块能方便的将需要发送的定位、设备等信息添加到发送队列中,同时队列也能确保消息的成功发送。在上述实施例的基础上,优选地,还包括:若未在所述预设时间段内接收到所述目标服务器发送的数据,则查询所述消息发送队列;若所述消息发送队列中存在目标消息,则向所述目标服务器发送所述目标消息。如果没有在设置的预设时间段内接收到该目标服务器发送的数据,说明前面发送的消息可能出现差错,导致发送的消息服务器没有接到,则查询该消息发送队列,如果该消息发送队列中不是空的,还存在目标消息,则按照相应的发送原则向目标服务器发送该目标消息。在上述实施例的基础上,优选地,所述若判断得知解包处理后的数据类型为请求类型,则将与所述数据对应的应答消息添加到所述消息发送队列中,包括:若判断得知解包处理后的数据类型为请求类型,且所述消息发送队列中的数据已满,则将与所述数据对应的应答消息覆盖掉所述消息发送队列中最旧的一条数据。如果判断得到该解包处理后的数据类型为请求类型,并且检测到消息发送队列中的数据已经满员了,则利用与该数据对应的应答消息覆盖掉消息发送队列中最旧的一条数据。在上述实施例的基础上,优选地,所述消息的信息流水号是唯一的,所述数据的信息流水号是唯一的。本发明实施例中,每个消息和每个数据的格式中都包含信息流水号,并且信息流水号都是唯一的。通过信息流水号,可以避免一个数据的重复发送。在上述实施例的基础上,优选地,所述消息和所述数据的消息结构包括消息头和消息体,所述消息头为公共包头,所述消息体为消息内容。在上述实施例的基础上,优选地,所述消息体包括消息总长度、连续报数、主命令或响应类型、子命令字和消息流水号。设备与目标服务器通讯方式定为以udp协议为基础设计的私有传输协议,主要用于设备与目标服务器间进行数据传递。使用udp进行通讯功耗低。数据和消息的数据结构如表1和表2所示,其中表1为消息结构,表2为消息头格式,具体如下:表1项目说明messageheader消息头(所有消息公共包头)messagebody消息体表2total_length:消息包长度,包含消息头12个字节,无符号短整型占2个字节。package_number:私有协议包,每个包不大于4096字节,如果发送的数据大于4096则分位多包发送,包的顺序、个数有次字段描述。main_cmd:主命令字,用于不同类型的设备。sub_cmd:子命令字,用于区分当前命令字业务类型,不同的命令字由不同的业务逻辑处理,无符号短整型占2个字节,支持最大命令数为32767个。用命令字的最高位区分命令字是request还中response类型的命令。最高位为0表示request命令字,最高位为1则表示为response命令字。sequence_id:unsignedint,用于关联request和response,并统计连接包计数,对应request和response的sequence_id相同,只有在收到相同sequence_id的response时,才能把发送队列中的相应request删除。本发明一优选实施例提供一种设备与服务器之间的通信方法,如图2所示,该方法包括:首先与目标服务器之间建立udp链接,并绑定目标服务器的地址,监听是否收到目标服务器发送过来的数据,如果接收到目标服务器发送过来的数据,首先对该数据进行数据解包处理,并基于解包处理后的数据进行判断,如果判断该数据类型是request类型,将对应的response消息添加到消息发送队列中;如果判断该数据类型是response类型,则将对应的request消息从发送队列中删除。如果没有接收到目标服务器发送过来的数据,则查询消息发送队列,若有数据,则将数据发送给服务器。本发明实施例中主流程的代码如下:本发明实施例中数据解包函数代码如下:主要功能是对接收到的数据进行解包,并执行相应的命令字的执行函数。同时判断命令类型,若是request消息,则将对应的response消息添加进发送队列。若是response消息,则将发送队列中对应的request消息删除。本发明实施例中队列发送函数代码如下:主要功能是查询发送队列,若队列非空,则将数据发送给服务器,若在一段时间内未收到服务器返回的响应,则对数据进行重发。本发明实施例中消息添加函数如下:主要功能是将需要发送的数据添加入消息队列,若消息队列已满,则会将最旧的那一条数据覆盖掉。本发明实施例提供一种设备与服务器之间的通信系统,如图3所示,该系统包括:发送模块301、解包模块302、第一判断模块303和第二判断模块304,其中:发送模块301用于与目标服务器之间建立链接,并向所述目标服务器发送消息发送队列中的消息;解包模块302用于若在预设时间段内接收到所述目标服务器发送的数据,则对所述数据进行解包处理,获取解包处理后的数据;第一判断模块303用于若判断得知解包处理后的数据类型为请求类型,则将与所述数据对应的应答消息添加到所述消息发送队列中;第二判断模块304用于若判断得知解包处理后的数据类型为回答类型,且所述消息和所述数据的信息流水号相同,则将所述消息从所述消息发送队列中删除。本实施例为与上述方法对应的系统实施例,其具体实施过程与上述方法相同,详情请参考上述方法实施例。本发明实施例提供了一种电子设备,如图4所示,该设备包括:处理器(processor)401、通信接口(communicationsinterface)402、存储器(memory)403和通信总线404,其中,处理器401,通信接口402,存储器403通过通信总线404完成相互间的通信。处理器401可以调用存储器403上并可在处理器401上运行的计算机程序,以执行上述各实施例提供的一种高精度快速无线电测向方法,例如包括:与目标服务器之间建立链接,并向所述目标服务器发送消息发送队列中的消息;若在预设时间段内接收到所述目标服务器发送的数据,则对所述数据进行解包处理,获取解包处理后的数据;若判断得知解包处理后的数据类型为请求类型,则将与所述数据对应的应答消息添加到所述消息发送队列中;若判断得知解包处理后的数据类型为回答类型,且所述消息和所述数据的信息流水号相同,则将所述消息从所述消息发送队列中删除。此外,上述的存储器403中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的一种高精度快速无线电测向方法,例如包括:与目标服务器之间建立链接,并向所述目标服务器发送消息发送队列中的消息;若在预设时间段内接收到所述目标服务器发送的数据,则对所述数据进行解包处理,获取解包处理后的数据;若判断得知解包处理后的数据类型为请求类型,则将与所述数据对应的应答消息添加到所述消息发送队列中;若判断得知解包处理后的数据类型为回答类型,且所述消息和所述数据的信息流水号相同,则将所述消息从所述消息发送队列中删除。以上所描述的电子设备等实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分方法。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1