【技术实现步骤摘要】
一种基于链表的报文协议超时重发方法及系统
[0001]本专利技术涉及一种基于链表的报文协议超时重发方法,属于计算机控制领域。
技术介绍
[0002]在多个分系统互联的大型系统中,系统间数据通过总线进行交互。在交互过程中由于干扰或故障等原因造成错帧、乱帧、丢帧等,造成了系统间数据交互的失败,一些重要数据交互的失败容易导致整个系统任务的失败。因此,系统间通讯对重要的报文数据通常要求接收方进行应答,传统的应答管理方法通常采用线性表的方式进行管理,例如在一个数组中标记出哪些报文已经成功发送但还未收到应答,并通过计数器进行超时计数,超时发生后根据全局变量记录的报文内容进行重发操作。但对于不同的报文类型,报文发送后在数组中标记该报文是否需要应答,对于系统中不断增加的需要应答的报文数量,数组的长度需要不断增加,参与标记的变量也不断增多,代码的框架也需要不停进行修改,同时超时管理在程序中通过一个定时器进行计数,管理若干需要应答的报文,这种管理方式非常容易出错,当报文重发时,需要确认需要重发报文的地址、内容、长度等信息,一般为全局共有变量,从报文第一次发送到超时未应答期间数据的值可能被篡改,导致两次发送数据内容并非完全一致,影响系统正常运行。
技术实现思路
[0003]本专利技术的技术解决问题是:克服现有技术的不足,提供了一种基于链表的报文协议超时重发方法。
[0004]本专利技术的技术解决方案是:
[0005]一种基于链表的报文协议超时重发方法,步骤如下:
[0006](1)设计报文协议超时重
【技术保护点】
【技术特征摘要】
1.一种基于链表的报文协议超时重发方法,其特征在于步骤如下:(1)设计报文协议超时重发管理的链表Link;(2)对链表Link进行初始化操作,将链表Link初始化为空节点链表,头尾指针指向相同的节点;(3)在已初始化的链表Link中插入一个节点,该节点参数为报文重发管理结构变量;(4)在进行报文发送时,使用报文重发管理结构对发送内容进行管理;(5)在报文接收函数中对接收确认报文进行处理;(6)设置并启动查询无效节点定时器,并进行无效节点查询;(7)在查询无效节点定时器中进行重发操作。2.根据权利要求1所述的一种基于链表的报文协议超时重发方法,其特征在于:所述链表Link的数据域存储的数据元素为报文重发管理结构,指针域为指向下一个节点的地址。3.根据权利要求2所述的一种基于链表的报文协议超时重发方法,其特征在于:报文重发管理结构包括报文发送的目的地址、报文序号、需要发送的数据指针、需要发送的数据长度、是否收到标志、重发计数器、以及需要重发的次数。4.根据权利要求2所述的一种基于链表的报文协议超时重发方法,其特征在于:对链表Link的进行初始化操作,具体为:(2.1)定义链表Link指型变量:包括头节点指针head,普通节点指针node,尾节点指针tail;(2.2)使用动态内存申请方法申请链表Link结构长度的内存pLink,将申请到的内存首地址赋值到头节点指针head;(2.3)将头节点指针head的值赋值到尾结点指针tail;(2.4)链表Link的初始状态是空节点,头尾指针都指向相同的位置pLink。5.根据权利要求4所述的一种基于链表的报文协议超时重发方法,其特征在于:所述步骤(3)在已初始化的链表Link中插入一个节点,具体为,参数为报文重发管理结构FrmMani类型变量nodeAdd;(3.1)定义重发管理的链表Link指针变量node1、node2,使用动态内存申请方法申请重发管理的链表Link所占长度的内存,将所申请内存空间的首地址赋值到node1;(3.2)将函数形参nodeAdd的值赋到node1节点的报文重发管理结构数据成员;(3.3)判断头指针head是否为空,如果为空,则将node1的值赋值给head,如果不为空,则将头指针赋值给node2;(3.4)循环判断node2中next元素指向的内容是否为空,如果不为空,把node2中next元素所指向的内容赋值到node2,如果为空,则将node1的值赋值给node2中next元素所指的位置,同时将node1中next元素所指的位置设置为空指针NULL。6.根据权利要求5所述的一种基于链表的报文协议超时重发方法,其特征在于:所述步骤(4)使用报文重发管理结构对发送内容进行管理,具体为:(4.1)定义报文重发管理结构FrmMani变量gMani;(4.2)调用报文发送函数后,将报文发送的目的地址FrmDst、报文序号FrmSeq、发送报文的数据指针FrmPtr、发送给报文的数据长度FrmLen分别赋值到报文重发管理结构FrmMani变量gMani中对应的成员中;
(4.3)将变量gMani中的重发计数器SndCnt清零,设置需要重发的次数SndTimes,设置是否收到标志IsRecvd设置为否。7.根据权利要求5所述的一种基于链表的报文协议超时重...
【专利技术属性】
技术研发人员:王雨龙,
申请(专利权)人:天津津航计算技术研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。