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

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

Info

Publication number
CN103888441B
CN103888441B CN201410003969.4A CN201410003969A CN103888441B CN 103888441 B CN103888441 B CN 103888441B CN 201410003969 A CN201410003969 A CN 201410003969A CN 103888441 B CN103888441 B CN 103888441B
Authority
CN
China
Prior art keywords
message
protocol stack
connection
function
application program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410003969.4A
Other languages
English (en)
Other versions
CN103888441A (zh
Inventor
冯璐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
T1 NETWORKS Co Ltd
Original Assignee
T1 NETWORKS Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by T1 NETWORKS Co Ltd filed Critical T1 NETWORKS Co Ltd
Priority to CN201410003969.4A priority Critical patent/CN103888441B/zh
Publication of CN103888441A publication Critical patent/CN103888441A/zh
Application granted granted Critical
Publication of CN103888441B publication Critical patent/CN103888441B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Executing Machine-Instructions (AREA)
  • Telephone Function (AREA)

Abstract

本发明提供一种应用程序与协议栈之间的信息传输方法及处理装置,所述方法包括:应用程序使用基于回调函数表的套接字应用编程接口,调用协议栈的功能函数以执行相应的功能;协议栈进行报文处理和/或超时处理时,如出现需要通知应用程序的事件,则生成相应的消息,并将生成的消息插入消息队列;协议栈进行消息处理时,从消息队列取出消息,调用应用程序相应的处理函数处理,处理完成后清空所述消息队列。本发明利用单任务消息队列轮询机制取代系统调用,提高了协议栈的处理性能。

Description

一种应用程序与协议栈之间的信息传输方法及处理装置
技术领域
本发明涉及数据处理,尤其涉及应用程序与协议栈之间的信息传输方法及处理装置。
背景技术
目前比较常用的专用协议栈大致分为两种,一种是以linux或者FreeBSD标准协议栈为基础的商用专有协议栈,另一种是遵守TCP协议栈标准,按照某种系统框架进行修改而得出的开源的轻量级协议栈,最常见的能够移植商用的就是LWIP,其它协议栈类似OpenTCP。这些开源的协议栈大多适用于理论研究以及协议栈教学使用,其实现虽然提出一些比较实用的技术和概念,但缺乏一些具体实现方案,商业化难度较大。
对于LWIP协议栈,该协议栈使用信号量和“mailbox”机制来实现应用程序与协议栈之间的信息传输,包括数据传递,事件通知和触发,协议栈参数配置等功能,避免了使用传统协议栈使用的系统调用,从而减少了应用程序从内核到用户态的上下文切换,以减少系统运行的资源占用,提高系统性能。
目前LWIP协议栈由于其资源消耗小,处理流程实现简洁而被广泛使用在嵌入式的数据处理终端上,例如图像采集终端,可视化监控终端设备上。
现有的各种轻量级协议栈大多都是把最大限度的减少系统资源消耗作为目标,因此它们的处理性能一般都比较低。另外,虽然LWIP提出的使用信号量和“mailbox”机制来代替系统调用的方案可以在一定程度上提高系统的处理性能,但是信号量和“mailbox”机制仍然不能完全避免应用程序的调度问题。原因在于信号量和“mailbox”机制都会引起当前进程进入睡眠状态,当一个进程从运行状态转为睡眠状态或者从睡眠状态转为运行状态的时候,CPU都会发生调度,以便让其它进程可以得到处理。这种操作是需要一定的系统开销的。因此LWIP提出的技术方案虽然避免了系统调用带来的性能消耗,但是同时也引入了信号量的睡眠和唤醒,增加了一定的性能消耗。
发明内容
本发明所要解决的技术问题是提供一种应用程序与协议栈之间的信息传输方法,在避免系统调用的同时避免使用信号量,从而避免信号量所引起的睡眠情况和唤醒,减少进程调度造成的性能损失,提高协议栈的处理性能。
为了解决上述技术问题,本发明提供一种应用程序与协议栈之间的信息传输方法,所述方法包括:
应用程序使用基于回调函数表的套接字应用编程接口,调用协议栈的功能函数以执行相应的功能;
所述协议栈进行报文处理和/或超时处理时,如出现需要通知应用程序的事件,则生成相应的消息,并将所述生成的消息插入消息队列;
所述协议栈进行消息处理时,从所述消息队列取出消息,调用应用程序相应的处理函数处理,处理完成后清空所述消息队列。
较佳地,
所述协议栈以单任务方式,循环进行所述报文处理、超时处理和消息处理,或者循环进行所述超时处理、报文处理和消息处理。
较佳地,
所述应用程序使用基于回调函数表的套接字应用编程接口,调用协议栈的功能函数,包括:
系统启动时,在所述回调函数表中指定各套接字应用编程接口对应的回调函数,回调函数是协议栈提供的内部接口函数,用于调用协议栈相应的功能函数,并将参数从套接字应用编程接口的参数结构体中取出,传递给所述功能函数;
所述应用程序调用一套接字应用编程接口时,该套接字应用编程接口从所述回调函数表查找对应的回调函数并通过所述回调函数调用协议栈相应的功能函数。
较佳地,
所述协议栈为TCP协议栈,所述协议栈进行报文处理时,如出现需要通知应用程序的事件,则生成相应的消息,包括以下情况中的一种或多种:
在被动建立连接时,收到三次握手中的最后一个确认报文后,生成create消息以通知应用程序连接建成,所述create消息包含新建连接的连接句柄;
在主动建立连接时,发出三次握手的最后一个确认报文后,生成tx_clear消息以通知应用程序连接可读写,所述tx_clear消息包含所述连接的连接句柄;
在通知所述应用程序接口接收数据时,生成receive消息,所述receive消息包含接收数据所建立连接的连接句柄;
在通知应用程序接口关闭待关闭连接时,生成close消息,所述close消息包含所述待关闭连接的连接句柄。
较佳地,
所述协议栈为TCP协议栈,所述协议栈进行超时处理时,如出现需要通知应用程序的事件,则生成相应的消息,包括:
如所述协议栈为一连接设置的定时器超时,产生reset消息以通知应用程序所述连接被异常中止,所述reset消息包含所述连接的连接句柄。
本发明还提供一种用于实现协议栈功能的处理装置,包括:
套接字应用编程接口,用于提供给应用程序调用,且在被调用时,基于回调函数表调用协议栈的功能函数以执行相应的功能;
报文处理模块,用于进行报文处理,且在出现需要通知应用程序的事件时,生成相应的消息;
超时处理模块,用于在连接超时时,生成相应的消息;
消息管理模块,用于将所述报文处理模块和超时处理模块生成的消息插入消息队列;
消息处理模块,用于从所述消息队列取出消息,调用应用程序相应的处理函数处理,处理完成后清空所述消息队列。
较佳地,
所述的处理装置还包括:
调度模块,用于以单任务方式,依次激活所述报文处理模块、超时处理模块和消息处理模块循环进行报文处理、超时处理和消息处理;或者,依次激活所述超时处理模块、报文处理模块和消息处理模块循环进行超时处理、报文处理和消息处理。
较佳地,
套接字应用编程接口用于提供给应用程序调用,且在被调用时,基于回调函数表调用协议栈的功能函数以执行相应的功能包括:
系统启动时,在所述回调函数表中指定各套接字应用编程接口对应的回调函数,回调函数是协议栈提供的内部接口函数,用于调用协议栈相应的功能函数,并将参数从套接字应用编程接口的参数结构体中取出,传递给所述功能函数;
所述应用程序调用一套接字应用编程接口时,该套接字应用编程接口从所述回调函数表查找对应的回调函数并通过所述回调函数调用协议栈相应的功能函数。
较佳地,
所述协议栈为TCP协议栈;
所述报文处理模块进行报文处理,且在出现需要通知应用程序的事件时,生成相应的消息,包括以下情况中的一种或多种:
在被动建立连接时,收到三次握手中的最后一个确认报文后,所述报文处理模块生成create消息以通知应用程序连接建成,所述create消息包含新建连接的连接句柄;
在主动建立连接时,发出三次握手的最后一个确认报文后,所述报文处理模块生成tx_clear消息以通知应用程序连接可读写,所述tx_clear消息包含所述连接的连接句柄;
在通知所述应用程序接口接收数据时,所述报文处理模块生成receive消息,所述receive消息包含接收数据所建立连接的连接句柄;
在通知应用程序接口关闭待关闭连接时,所述报文处理模块生成close消息,所述close消息包含所述待关闭连接的连接句柄。
较佳地,
所述协议栈为TCP协议栈,所述超时处理模块在连接超时时,生成相应的消息,包括:
如所述协议栈为一连接设置的定时器超时,超时处理模块产生reset消息以通知应用程序所述连接被异常中止,所述reset消息包含所述连接的连接句柄。
上述方案利用单任务的消息队列轮询机制取代传统协议栈中的系统调用,避免了运行空间在内核态和用户态之间的切换以及应用程序睡眠情况的发生,从而减少进程调度造成的性能损失,提高协议栈及系统的处理性能。
附图说明
图1是本发明实施例一的应用程序与协议栈之间的信息传输方法的流程图;
图2是本发明实施例一的用于实现协议栈功能的处理装置的结构示意图;
图3是本发明实施例一的用于实现协议栈功能的处理装置中调度模块执行调度的示意图;
图4是本发明实施例一的套接字应用编程接口的调用结构的示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
实施例一
如图1所示,本实施例提供一种应用程序与协议栈之间的信息传输方法,包括:
步骤S101:应用程序使用基于回调函数表的套接字应用编程接口,调用协议栈的功能函数以执行相应的功能;
本实施例中,协议栈可以为TCP协议栈,应用程序使用基于回调函数表的套接字应用编程接口,调用协议栈的功能函数包括:
系统启动时,在回调函数表中指定各套接字应用编程接口对应的回调函数,回调函数是协议栈提供的内部接口函数,用于调用协议栈相应的功能函数,并将参数从套接字应用编程接的参数结构体中取出,传递给功能函数;
应用程序调用一套接字应用编程接时,该套接字应用编程接从回调函数表查找对应的回调函数并通过回调函数调用协议栈相应的功能函数。
基于回调函数表的套接字应用编程接口是TCP协议栈提供给应用程序的应用程序编程接口函数,它通过回调函数注册的方式来调用TCP协议栈的功能函数以执行应用程序需要的功能,它是TCP协议栈与应用程序之间传递数据和信息的接口。
如表1所示,基于回调函数表的套接字应用编程接口是一组预定义的函数集合,它提供了TCP连接创建,设置,数据接收,数据发送,连接关闭等功能接口函数。通过系统启动时注册回调函数表来建立各套接字应用编程接口对应的回调函数和协议栈之间的联系。应用程序通过调用不同的套接字应用编程接口对应的回调函数来传递参数。套接字应用编程接口通过查询回调函数表来确定应用程序需要的功能函数入口。
表1
步骤S102:协议栈进行报文处理和/或超时处理时,如出现需要通知应用程序的事件,则生成相应的消息,并将生成的消息插入消息队列;
TCP协议栈需要通知上层处理的消息分为两种,一种是由数据报文触发的消息,包括数据接收,连接建立,连接被动关闭以及由接收到对端发送的reset报文导致的异常处理;另一种是由定时器超时触发的连接状态转变引起的超时处理。因此只要能够在合适的时机及时处理协议栈产生的这些消息,就可以支持协议栈的正常运行。
协议栈进行报文处理时,如出现需要通知应用程序的事件,则生成相应的消息,包括以下情况中的一种或多种:
1)在被动建立连接时,收到三次握手中的最后一个确认报文后,生成create消息以通知应用程序连接建成,所述create消息包含新建连接的连接句柄;
被动连接建立是通过协议栈收到SYN报文开始,当协议栈收到SYN报文时,标志着一个新的TCP连接请求到来,协议栈通过这个SYN报文创建该连接对应的控制结构,并向连接请求端回复SYN+ACK报文,表示接受该连接请求,当连接请求端以ACK报文确认了SYN+ACK报文时,表示连接双方已经正式建立连接,三次握手完成,此时协议栈该ACK报文,并产生一个create消息插入协议栈消息队列。create消息包含了这个新建的连接句柄,应用程序通过处理这个create消息获取这个新建的连接句柄,以便进行后续可能的数据读写和连接访问操作。
2)在主动建立连接时,发出三次握手的最后一个确认报文后,生成tx_clear消息以通知应用程序连接可读写,所述tx_clear消息包含所述连接的连接句柄;
主动连接建立是由消息处理模块中的应用程序接口所对应的应用程序决定和发起。当应用程序调用基于回调函数表的套接字应用编程接口创建一个连接时,由于TCP连接建立需要进行三次握手的交互过程,在这个阶段应用程序不可以发送任何数据,因此当应用程序调用基于回调函数表的套接字应用编程接口创建连接时,基于回调函数表的套接字应用编程接口会调用协议栈函数建立连接对应的控制结构和连接句柄,并同时向连接对端发送一个SYN报文,之后基于回调函数表的套接字应用编程接口立刻返回,此时新建立的连接不可读写,对端如果允许连接建立则会回复SYN+ACK报文,协议栈收到SYN+ACK报文后回复ACK报文确认这个SYN+ACK报文,同时产生一个tx_clear消息通知应用程序连接已经可以读写数据,该消息包含了这个连接的连接句柄,应用程序处理这个消息可以根据消息中的连接句柄对该连接进行读写操作。
3)在通知所述应用程序接口接收数据时,生成receive消息,所述receive消息包含接收数据所建立连接的连接句柄;
对于已经建立的连接,当协议栈接收到报文时,协议栈处理报文并解析出报文中包含的TCP数据负载,此时协议栈产生一个receive消息通知应用程序有数据到达,receive消息包含了该连接的连接句柄,应用程序处理receive消息获得连接句柄,并根据它调用基于回调函数表的套接字应用编程接口接收数据。
4)在通知应用程序接口关闭待关闭连接时,生成close消息,所述close消息包含所述待关闭连接的连接句柄。
分为主动关闭和被动关闭两种情况。由于主动关闭是自上而下的连接释放过程,虽然在关闭连接过程中有报文交互,但是已经不需要再通知上层应用程序了。与之相反的被动关闭过程是由FIN报文触发,当一条连接收到一个带有FIN标志的报文时,这标志着对端已经不会再继续发送数据,此时应该通知应用程序来关闭这条连接。协议栈收到FIN报文时产生一个close消息,close消息包含该连接的连接句柄,应用程序处理close消息获得连接句柄,并根据自身需要调用基于回调函数表的套接字应用编程接口关闭连接。
协议栈进行超时处理时,如出现需要通知应用程序的事件,则生成相应的消息,包括:
如协议栈为一连接设置的定时器超时,产生reset消息以通知应用程序所述连接被异常中止,reset消息包含连接的连接句柄。
定时器是维护TCP连接状态机的工具,是TCP协议栈状态机得以正确运行的必要支撑,定时器主要管理着TCP的报文重传和TCP连接的状态老化。为了防止TCP协议栈状态机因为网络异常等原因导致TCP连接长时间停留在某个状态而占用系统资源。定时器通过超时事件产生reset消息来通知应用程序该连接被异常终止。reset消息包含该连接的连接句柄,应用程序处理reset消息获得连接句柄,并调用基于回调函数表的套接字应用编程接口终止连接。
所述reset消息是唯一的一个表示处理异常的消息,定时器仅产生这种消息,但是reset消息并不全部来源于定时器,TCP协议栈的每一种导致连接终止的异常错误都通过产生reset消息来通知应用程序终止连接,包括系统处理的不可恢复的内部错误,收到对端的RST报文,状态超时三种情况。
此外,需要说明的是,数据发送本质上不主动产生消息,但是由于TCP协议栈的连接发送缓冲区有大小限制,因此当应用程序持续向连接写入数据时会导致连接发送缓冲区满而使得连接变为不可写入状态。为了防止应用程序频繁的向一个不可写入状态的连接写入数据,TCP协议栈通过tx_clear消息来通知应用程序连接状态已经变为可写状态,这样一旦一条连接成为不可写入状态以后就不需要再次执行写操作,而是等待tx_clear消息来触发应用程序继续执行写操作。
tx_clear消息在TCP协议栈执行完一次报文发送操作之后检查发送缓冲区大小,当发送缓冲区大小大于发送缓冲区总大小的一半并且连接处于不可写入状态时,协议栈产生一个tx_clear消息,tx_clear消息包含了该连接的连接句柄,应用程序处理tx_clear消息获得连接句柄,并根据它调用基于回调函数表的套接字应用编程接口发送数据
步骤S103:所述协议栈进行消息处理时,从所述消息队列取出消息,调用应用程序相应的处理函数处理,处理完成后清空所述消息队列。
消息队列是单向的消息队列,协议栈以单任务方式,循环进行报文处理、超时处理和消息处理,或者循环进行所述超时处理、报文处理和消息处理。
由于网络设备处理的数据业务比较固定,而且基于OSI的网络模型使得各个层次之间的接口变得简单,因此对于一个CPU来说,多任务其实并不是必须的,信号量机制也就失去了原有的意义。
上述方案本去掉信号量的使用,避免应用程序出现睡眠的情况而设计的,从而避免了传统协议栈和已出现的轻量级协议栈中存在的进程调度造成的性能损失,提高TCP协议栈的处理性能。
如图2和图3所示,本实施例还提供一种用于实现协议栈功能的处理装置,包括:
套接字应用编程接口1,用于提供给应用程序调用,且在被调用时,基于回调函数表调用协议栈2的功能函数以执行相应的功能;
报文处理模块21,用于进行报文处理,且在出现需要通知应用程序的事件时,生成相应的消息;
超时处理模块22,用于在连接超时时,生成相应的消息;
消息管理模块23,用于将所述报文处理模块21和超时处理模块22生成的消息插入消息队列;
消息处理模块24,用于从所述消息队列取出消息,调用应用程序相应的处理函数处理,处理完成后清空所述消息队列。
图4为套接字应用编程接口1的调用结构,套接字应用编程接口1根据不同的函数功能将参数通过联合定义的方式整合为统一的结构体,从而以相同的接口函数类型创建回调函数表,使得不同的套接字应用编程接口1通过不同的回调函数向量就可以查询到对应的回调函数,回调函数是协议栈2提供的一个内部接口函数,它负责根据不同的操作从参数结构体中取出参数,并将参数传递给协议栈2。
优选地,
用于实现协议栈功能的处理装置还包括调度模块25,用于以单任务方式,依次激活所述报文处理模块21、超时处理模块22和消息处理模块24循环进行报文处理、超时处理和消息处理;或者,依次激活所述超时处理模块22、报文处理模块21和消息处理模块24循环进行超时处理、报文处理和消息处理。
优选地,
套接字应用编程接口1用于提供给应用程序调用,且在被调用时,基于回调函数表调用协议栈2的功能函数以执行相应的功能包括:
系统启动时,在所述回调函数表中指定各套接字应用编程接口对应的回调函数,回调函数是协议栈提供2的内部接口函数,用于调用协议栈2相应的功能函数,并将参数从套接字应用编程接口的参数结构体中取出,传递给所述功能函数;
所述应用程序调用一套接字应用编程接口时,该套接字应用编程接口从所述回调函数表查找对应的回调函数并通过所述回调函数调用协议栈相应的功能函数。
优选地,
所述协议栈2为TCP协议栈2;
所述报文处理模块21进行报文处理,且在出现需要通知应用程序的事件时,生成相应的消息,包括以下情况中的一种或多种:
在被动建立连接时,收到三次握手中的最后一个确认报文后,所述报文处理模块生成create消息以通知应用程序连接建成,所述create消息包含新建连接的连接句柄;
在主动建立连接时,发出三次握手的最后一个确认报文后,所述报文处理模块生成tx_clear消息以通知应用程序连接可读写,所述tx_clear消息包含所述连接的连接句柄;
在通知所述应用程序接口3接收数据时,所述报文处理模块生成receive消息,所述receive消息包含接收数据所建立连接的连接句柄;
在通知应用程序接口3关闭待关闭连接时,所述报文处理模块生成close消息,所述close消息包含所述待关闭连接的连接句柄。
优选地,
所述协议栈2为TCP协议栈2,所述超时处理模块22在连接超时时,生成相应的消息,包括:
如所述协议栈2为一连接设置的定时器超时,超时处理模块22产生reset消息以通知应用程序所述连接被异常中止,所述reset消息包含所述连接的连接句柄。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

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消息包含所述连接的连接句柄。
CN201410003969.4A 2014-01-03 2014-01-03 一种应用程序与协议栈之间的信息传输方法及处理装置 Active CN103888441B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410003969.4A CN103888441B (zh) 2014-01-03 2014-01-03 一种应用程序与协议栈之间的信息传输方法及处理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410003969.4A CN103888441B (zh) 2014-01-03 2014-01-03 一种应用程序与协议栈之间的信息传输方法及处理装置

Publications (2)

Publication Number Publication Date
CN103888441A CN103888441A (zh) 2014-06-25
CN103888441B true CN103888441B (zh) 2017-03-08

Family

ID=50957161

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410003969.4A Active CN103888441B (zh) 2014-01-03 2014-01-03 一种应用程序与协议栈之间的信息传输方法及处理装置

Country Status (1)

Country Link
CN (1) CN103888441B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105162751B (zh) * 2015-06-18 2018-06-22 南京国电南自电网自动化有限公司 一种基于lwIP协议栈多网口多连接的通讯系统
CN107204908A (zh) 2016-03-17 2017-09-26 阿里巴巴集团控股有限公司 一种基于通信接口框架的消息发送、接收方法及装置
CN106201830A (zh) * 2016-07-27 2016-12-07 福建富士通信息软件有限公司 一种基于epoll写数据监视的方法以及系统
CN106302199B (zh) * 2016-08-10 2019-12-17 成都广达新网科技股份有限公司 一种基于三层交换机设备的用户态协议栈实现方法及系统
CN107920073A (zh) * 2017-11-17 2018-04-17 广西小草信息产业有限责任公司 一种协议栈运行装置和方法
CN110351223B (zh) * 2018-04-02 2021-09-17 腾讯科技(深圳)有限公司 定时提醒方法、装置和计算机程序介质
CN109002363A (zh) * 2018-06-21 2018-12-14 郑州云海信息技术有限公司 一种事件处理方法、装置、设备及可读存储介质
CN109656725B (zh) * 2018-11-09 2019-12-27 北京字节跳动网络技术有限公司 消息消费者切换方法、装置、存储介质及电子设备
CN111698275B (zh) * 2019-03-15 2021-12-14 华为技术有限公司 数据处理方法、装置及设备
CN111984412A (zh) * 2020-08-18 2020-11-24 上海睿赛德电子科技有限公司 一种基于信号量机制的用户态定时器实现方法
CN112769688B (zh) * 2020-12-18 2022-07-29 南方电网科学研究院有限责任公司 协议栈适配的方法、装置、电子设备及存储介质
WO2023206495A1 (zh) * 2022-04-29 2023-11-02 时代电服科技有限公司 电池管理设备的无线连接方法、装置和电池管理设备
CN115243272B (zh) * 2022-07-20 2024-05-14 中国电信股份有限公司 无线接入网及其数据获取方法、通信系统及设备
CN115827120B (zh) * 2023-01-10 2023-05-23 苏州浪潮智能科技有限公司 用户态网络栈调用、用户态接口设置方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005039142A1 (en) * 2003-10-17 2005-04-28 Siemens Aktiengesellschaft A basic message service for redundant devices
CN101247266A (zh) * 2008-03-21 2008-08-20 深圳国人通信有限公司 以太网中进行数据处理的方法
CN101421791A (zh) * 2005-02-03 2009-04-29 Level5网络有限公司 用于主机和外围设备之间通信的队列深度管理
CN102325136A (zh) * 2011-09-08 2012-01-18 中兴通讯股份有限公司 一种实现准实时发送媒体数据的方法
CN103347012A (zh) * 2013-06-21 2013-10-09 烽火通信科技股份有限公司 一种通用ip协议栈事件通知系统及方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005039142A1 (en) * 2003-10-17 2005-04-28 Siemens Aktiengesellschaft A basic message service for redundant devices
CN101421791A (zh) * 2005-02-03 2009-04-29 Level5网络有限公司 用于主机和外围设备之间通信的队列深度管理
CN101247266A (zh) * 2008-03-21 2008-08-20 深圳国人通信有限公司 以太网中进行数据处理的方法
CN102325136A (zh) * 2011-09-08 2012-01-18 中兴通讯股份有限公司 一种实现准实时发送媒体数据的方法
CN103347012A (zh) * 2013-06-21 2013-10-09 烽火通信科技股份有限公司 一种通用ip协议栈事件通知系统及方法

Also Published As

Publication number Publication date
CN103888441A (zh) 2014-06-25

Similar Documents

Publication Publication Date Title
CN103888441B (zh) 一种应用程序与协议栈之间的信息传输方法及处理装置
TWI479850B (zh) 單數據機板之改良式多胞元支援方法及系統
CN102999386B (zh) 一种通过在单进程中实现多消息队列机制提升性能的方法
CN109219116A (zh) 一种终端设备的休眠方法及装置
TWI451339B (zh) 通信網路應用之無鎖及零拷貝發訊方法與設備
US20190377703A1 (en) Methods and apparatus for reduced-latency data transmission with an inter-processor communication link between independently operable processors
US20200065244A1 (en) Methods and apparatus for control of a jointly shared memory-mapped region
JP5516398B2 (ja) マルチプロセッサシステム、マルチプロセッサシステムのos間デバイス共有方法
CN101883436B (zh) 一种资源的并发处理方法、系统及移动终端
WO2010145444A1 (zh) 一种及时消息及时处理的方法及装置
US20100088703A1 (en) Multi-core system with central transaction control
WO2002031672A2 (en) Method and apparatus for interprocessor communication and peripheral sharing
CN103647726A (zh) 一种报文调度方法及装置
US20200210224A1 (en) Methods and apparatus for verifying completion of groups of data transactions between processors
CN101281480B (zh) 一种嵌入式系统中实现睡眠功能的方法
US20200348989A1 (en) Methods and apparatus for multiplexing data flows via a single data structure
CN107968848B (zh) 一种获取ip地址的方法、终端设备及存储介质
CN114697194B (zh) 阻塞式事件通知方法及装置
CN103440213A (zh) 一种应用于具有多cpu和网卡的系统的网卡驱动方法
CN113157465B (zh) 基于指针链表的消息发送方法及装置
CN112905357B (zh) 一种数据读取方法、系统、电子设备及存储介质
WO2024067529A1 (zh) 基于rdma的建连方法、装置、设备及存储介质
CN102117261B (zh) 一种芯片内部处理器之间的通信方法
US8869171B2 (en) Low-latency communications
CN104601289B (zh) 电子设备及信息处理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant