一种应用程序与协议栈之间的信息传输方法及处理装置制造方法

文档序号:6534877阅读:198来源:国知局
一种应用程序与协议栈之间的信息传输方法及处理装置制造方法
【专利摘要】本发明提供一种应用程序与协议栈之间的信息传输方法及处理装置,所述方法包括:应用程序使用基于回调函数表的套接字应用编程接口,调用协议栈的功能函数以执行相应的功能;协议栈进行报文处理和/或超时处理时,如出现需要通知应用程序的事件,则生成相应的消息,并将生成的消息插入消息队列;协议栈进行消息处理时,从消息队列取出消息,调用应用程序相应的处理函数处理,处理完成后清空所述消息队列。本发明利用单任务消息队列轮询机制取代系统调用,提高了协议栈的处理性能。
【专利说明】一种应用程序与协议栈之间的信息传输方法及处理装置
【技术领域】
[0001]本发明涉及数据处理,尤其涉及应用程序与协议栈之间的信息传输方法及处理装置。
【背景技术】
[0002]目前比较常用的专用协议栈大致分为两种,一种是以Iinux或者FreeBSD标准协议栈为基础的商用专有协议栈,另一种是遵守TCP协议栈标准,按照某种系统框架进行修改而得出的开源的轻量级协议栈,最常见的能够移植商用的就是LWIP,其它协议栈类似OpenTCP。这些开源的协议栈大多适用于理论研究以及协议栈教学使用,其实现虽然提出一些比较实用的技术和概念,但缺乏一些具体实现方案,商业化难度较大。
[0003]对于LWIP协议栈,该协议栈使用信号量和“mailbox”机制来实现应用程序与协议栈之间的信息传输,包括数据传递,事件通知和触发,协议栈参数配置等功能,避免了使用传统协议栈使用的系统调用,从而减少了应用程序从内核到用户态的上下文切换,以减少系统运行的资源占用,提高系统性能。
[0004]目前LWIP协议栈由于其资源消耗小,处理流程实现简洁而被广泛使用在嵌入式的数据处理终端上,例如图像采集终端,可视化监控终端设备上。
[0005]现有的各种轻量级协议栈大多都是把最大限度的减少系统资源消耗作为目标,因此它们的处理性能一般都比较低。另外,虽然LWIP提出的使用信号量和“mailbox”机制来代替系统调用的方案可以在一定程度上提高系统的处理性能,但是信号量和“mailbox”机制仍然不能完全避免应用程序的调度问题。原因在于信号量和“mailbox”机制都会引起当前进程进入睡眠状态,当一个进程从运行状态转为睡眠状态或者从睡眠状态转为运行状态的时候,CPU都会发生调度,以便让其它进程可以得到处理。这种操作是需要一定的系统开销的。因此LWIP提出的技术方案虽然避免了系统调用带来的性能消耗,但是同时也引入了信号量的睡眠和唤醒,增加了一定的性能消耗。

【发明内容】

[0006]本发明所要解决的技术问题是提供一种应用程序与协议栈之间的信息传输方法,在避免系统调用的同时避免使用信号量,从而避免信号量所引起的睡眠情况和唤醒,减少进程调度造成的性能损失,提高协议栈的处理性能。
[0007]为了解决上述技术问题,本发明提供一种应用程序与协议栈之间的信息传输方法,所述方法包括:
[0008]应用程序使用基于回调函数表的套接字应用编程接口,调用协议栈的功能函数以执行相应的功能;
[0009]所述协议栈进行报文处理和/或超时处理时,如出现需要通知应用程序的事件,则生成相应的消息,并将所述生成的消息插入消息队列;
[0010]所述协议栈进行消息处理时,从所述消息队列取出消息,调用应用程序相应的处理函数处理,处理完成后清空所述消息队列。
[0011]较佳地,
[0012]所述协议栈以单任务方式,循环进行所述报文处理、超时处理和消息处理,或者循环进行所述超时处理、报文处理和消息处理。
[0013]较佳地,
[0014]所述应用程序使用基于回调函数表的套接字应用编程接口,调用协议栈的功能函数,包括:
[0015]系统启动时,在所述回调函数表中指定各套接字应用编程接口对应的回调函数,回调函数是协议栈提供的内部接口函数,用于调用协议栈相应的功能函数,并将参数从套接字应用编程接口的参数结构体中取出,传递给所述功能函数;
[0016]所述应用程序调用一套接字应用编程接口时,该套接字应用编程接口从所述回调函数表查找对应的回调函数并通过所述回调函数调用协议栈相应的功能函数。
[0017]较佳地,
[0018]所述协议栈为TCP协议栈,所述协议栈进行报文处理时,如出现需要通知应用程序的事件,则生成相应的消息,包括以下情况中的一种或多种:
[0019]在被动建立连接时,收到三次握手中的最后一个确认报文后,生成create消息以通知应用程序连接建成,所述create消息包含新建连接的连接句柄;
[0020]在主动建立连接时,发出三次握手的最后一个确认报文后,生成tx_clear消息以通知应用程序连接可读写,所述tx_clear消息包含所述连接的连接句柄;
[0021]在通知所述应用程序接口接收数据时,生成receive消息,所述receive消息包含接收数据所建立连接的连接句柄;
[0022]在通知应用程序接口关闭待关闭连接时,生成close消息,所述close消息包含所述待关闭连接的连接句柄。
[0023]较佳地,
[0024]所述协议栈为TCP协议栈,所述协议栈进行超时处理时,如出现需要通知应用程序的事件,则生成相应的消息,包括:
[0025]如所述协议栈为一连接设置的定时器超时,产生reset消息以通知应用程序所述连接被异常中止,所述reset消息包含所述连接的连接句柄。
[0026]本发明还提供一种用于实现协议栈功能的处理装置,包括:
[0027]套接字应用编程接口,用于提供给应用程序调用,且在被调用时,基于回调函数表调用协议栈的功能函数以执行相应的功能;
[0028]报文处理模块,用于进行报文处理,且在出现需要通知应用程序的事件时,生成相应的消息;
[0029]超时处理模块,用于在连接超时时,生成相应的消息;
[0030]消息管理模块,用于将所述报文处理模块和超时处理模块生成的消息插入消息队列;
[0031]消息处理模块,用于从所述消息队列取出消息,调用应用程序相应的处理函数处理,处理完成后清空所述消息队列。
[0032]较佳地,[0033]所述的处理装置还包括:
[0034]调度模块,用于以单任务方式,依次激活所述报文处理模块、超时处理模块和消息处理模块循环进行报文处理、超时处理和消息处理;或者,依次激活所述超时处理模块、报文处理模块和消息处理模块循环进行超时处理、报文处理和消息处理。
[0035]较佳地,
[0036]套接字应用编程接口用于提供给应用程序调用,且在被调用时,基于回调函数表调用协议栈的功能函数以执行相应的功能包括:
[0037]系统启动时,在所述回调函数表中指定各套接字应用编程接口对应的回调函数,回调函数是协议栈提供的内部接口函数,用于调用协议栈相应的功能函数,并将参数从套接字应用编程接口的参数结构体中取出,传递给所述功能函数;
[0038]所述应用程序调用一套接字应用编程接口时,该套接字应用编程接口从所述回调函数表查找对应的回调函数并通过所述回调函数调用协议栈相应的功能函数。
[0039]较佳地,
[0040]所述协议栈为TCP协议栈;
[0041]所述报文处理模块进行报文处理,且在出现需要通知应用程序的事件时,生成相应的消息,包括以下情况中的一种或多种:
[0042]在被动建立连接时,收到三次握手中的最后一个确认报文后,所述报文处理模块生成create消息以通知应用程序连接建成,所述create消息包含新建连接的连接句柄;
[0043]在主动建立连接时,发出三次握手的最后一个确认报文后,所述报文处理模块生成tx_clear消息以通知应用程序连接可读写,所述tx_clear消息包含所述连接的连接句柄;
[0044]在通知所述应用程序接口接收数据时,所述报文处理模块生成receive消息,所述receive消息包含接收数据所建立连接的连接句柄;
[0045]在通知应用程序接口关闭待关闭连接时,所述报文处理模块生成close消息,所述close消息包含所述待关闭连接的连接句柄。
[0046]较佳地,
[0047]所述协议栈为TCP协议栈,所述超时处理模块在连接超时时,生成相应的消息,包括:
[0048]如所述协议栈为一连接设置的定时器超时,超时处理模块产生reset消息以通知应用程序所述连接被异常中止,所述reset消息包含所述连接的连接句柄。
[0049]上述方案利用单任务的消息队列轮询机制取代传统协议栈中的系统调用,避免了运行空间在内核态和用户态之间的切换以及应用程序睡眠情况的发生,从而减少进程调度造成的性能损失,提高协议栈及系统的处理性能。
【专利附图】

【附图说明】
[0050]图1是本发明实施例一的应用程序与协议栈之间的信息传输方法的流程图;
[0051]图2是本发明实施例一的用于实现协议栈功能的处理装置的结构示意图;
[0052]图3是本发明实施例一的用于实现协议栈功能的处理装置中调度模块执行调度的不意图;[0053]图4是本发明实施例一的套接字应用编程接口的调用结构的示意图。
【具体实施方式】
[0054]为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
[0055]实施例一
[0056]如图1所示,本实施例提供一种应用程序与协议栈之间的信息传输方法,包括:
[0057]步骤SlOl:应用程序使用基于回调函数表的套接字应用编程接口,调用协议栈的功能函数以执行相应的功能;
[0058]本实施例中,协议栈可以为TCP协议栈,应用程序使用基于回调函数表的套接字应用编程接口,调用协议栈的功能函数包括:
[0059]系统启动时,在回调函数表中指定各套接字应用编程接口对应的回调函数,回调函数是协议栈提供的内部接口函数,用于调用协议栈相应的功能函数,并将参数从套接字应用编程接的参数结构体中取出,传递给功能函数;
[0060]应用程序调用一套接字应用编程接时,该套接字应用编程接从回调函数表查找对应的回调函数并通过回调函 数调用协议栈相应的功能函数。
[0061]基于回调函数表的套接字应用编程接口是TCP协议栈提供给应用程序的应用程序编程接口函数,它通过回调函数注册的方式来调用TCP协议栈的功能函数以执行应用程序需要的功能,它是TCP协议栈与应用程序之间传递数据和信息的接口。
[0062]如表1所示,基于回调函数表的套接字应用编程接口是一组预定义的函数集合,它提供了 TCP连接创建,设置,数据接收,数据发送,连接关闭等功能接口函数。通过系统启动时注册回调函数表来建立各套接字应用编程接口对应的回调函数和协议栈之间的联系。应用程序通过调用不同的套接字应用编程接口对应的回调函数来传递参数。套接字应用编程接口通过查询回调函数表来确定应用程序需要的功能函数入口。
【权利要求】
1.一种应用程序与协议栈之间的信息传输方法,所述方法包括: 应用程序使用基于回调函数表的套接字应用编程接口,调用协议栈的功能函数以执行相应的功能; 所述协议栈进行报文处理和/或超时处理时,如出现需要通知应用程序的事件,则生成相应的消息,并将所述生成的消息插入消息队列; 所述协议栈进行消息处理时,从所述消息队列取出消息,调用应用程序相应的处理函数处理,处理完成后清空所述消息队列。
2.如权利要求1所述的信息传输方法,其特征在于: 所述协议栈以单任务方式,循环进行所述报文处理、超时处理和消息处理,或者循环进行所述超时处理、报文处理和消息处理。
3.如权利要求1或2所述的信息传输方法,其特征在于: 所述应用程序使用基于回调函数表的套接字应用编程接口,调用协议栈的功能函数,包括: 系统启动时,在所述回调函数表中指定各套接字应用编程接口对应的回调函数,回调函数是协议栈提供的内部接口函数,用于调用协议栈相应的功能函数,并将参数从套接字应用编程接口的参数结构体中取出,传递给所述功能函数; 所述应用程序调用一套接字应用编程接口时,该套接字应用编程接口从所述回调函数表查找对应的回调函数并通过所述回调函数调用协议栈相应的功能函数。
4.如权利要求1或2所述的信息传输方法,其特征在于:` 所述协议栈为TCP协议栈,所述协议栈进行报文处理时,如出现需要通知应用程序的事件,则生成相应的消息,包括以下情况中的一种或多种: 在被动建立连接时,收到三次握手中的最后一个确认报文后,生成create消息以通知应用程序连接建成,所述create消息包含新建连接的连接句柄; 在主动建立连接时,发出三次握手的最后一个确认报文后,生成tX_Clear消息以通知应用程序连接可读写,所述tx_clear消息包含所述连接的连接句柄; 在通知所述应用程序接口接收数据时,生成receive消息,所述receive消息包含接收数据所建立连接的连接句柄; 在通知应用程序接口关闭待关闭连接时,生成close消息,所述close消息包含所述待关闭连接的连接句柄。
5.如权利要求1或2所述的信息传输方法,其特征在于: 所述协议栈为TCP协议栈,所述协议栈进行超时处理时,如出现需要通知应用程序的事件,则生成相应的消息,包括: 如所述协议栈为一连接设置的定时器超时,产生reset消息以通知应用程序所述连接被异常中止,所述reset消息包含所述连接的连接句柄。
6.一种用于实现协议栈功能的处理装置,其特征在于,包括: 套接字应用编程接口,用于提供给应用程序调用,且在被调用时,基于回调函数表调用协议栈的功能函数以执行相应的功能; 报文处理模块,用于进行报文处理,且在出现需要通知应用程序的事件时,生成相应的消息;超时处理模块,用于在连接超时时,生成相应的消息; 消息管理模块,用于将所述报文处理模块和超时处理模块生成的消息插入消息队列;消息处理模块,用于从所述消息队列取出消息,调用应用程序相应的处理函数处理,处理完成后清空所述消息队列。
7.如权利要求6所述的处理装置,其特征在于,还包括: 调度模块,用于以单任务方式,依次激活所述报文处理模块、超时处理模块和消息处理模块循环进行报文处理、超时处理和消息处理;或者,依次激活所述超时处理模块、报文处理模块和消息处理模块循环进行超时处理、报文处理和消息处理。
8.如权利要求6或7所述的处理装置,其特征在于: 套接字应用编程接口用于提供给应用程序调用,且在被调用时,基于回调函数表调用协议栈的功能函数以执行相应的功能包括: 系统启动时,在所述回调函数表中指定各套接字应用编程接口对应的回调函数,回调函数是协议栈提供的内部接口函数,用于调用协议栈相应的功能函数,并将参数从套接字应用编程接口的参数结构体中取出,传递给所述功能函数; 所述应用程序调用一套接字应用编程接口时,该套接字应用编程接口从所述回调函数表查找对应的回调函数并通过所述回调函数调用协议栈相应的功能函数。
9.如权利要求6或7所述的处理装置,其特征在于: 所述协议栈为TCP协议栈; 所述报文处理模块进行报文处理,且在出现需要通知应用程序的事件时,生成相应的消息,包括以下情况中的一种或多种: 在被动建立连接时,收到三次握手中的最后一个确认报文后,所述报文处理模块生成create消息以通知应用程序连接建成,所述create消息包含新建连接的连接句柄; 在主动建立连接时,发出三次握手的最后一个确认报文后,所述报文处理模块生成tx_clear消息以通知应用程序连接可读写,所述tx_clear消息包含所述连接的连接句柄; 在通知所述应用程序接口接收数据时,所述报文处理模块生成receive消息,所述receive消息包含接收数据所建立连接的连接句柄; 在通知应用程序接口关闭待关闭连接时,所述报文处理模块生成close消息,所述close消息包含所述待关闭连接的连接句柄。
10.如权利要求6或7所述的处理装置,其特征在于: 所述协议栈为TCP协议栈,所述超时处理模块在连接超时时,生成相应的消息,包括:如所述协议栈为一连接设置的定时器超时,超时处理模块产生reset消息以通知应用程序所述连接被异常中止,所 述reset消息包含所述连接的连接句柄。
【文档编号】G06F9/48GK103888441SQ201410003969
【公开日】2014年6月25日 申请日期:2014年1月3日 优先权日:2014年1月3日
【发明者】冯璐 申请人:北京太一星晨信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1