专利名称:一种支持多平台网络通讯处理系统及方法
技术领域:
本发明属于网络通信领域,具体涉及一种支持多平台网络通讯处理系统及方法。
背景技术:
TCP和UDP是TCP/IP协议中的两个传输层协议,它们使用IP路由功能把数据包发送到目的地,从而为应用程序及应用层协议(包括HTTP、SMTP、SNMP、FTP和Telnet)提供网络服务。TCP提供的是面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。面向连接的协议在任何数据传输前就建立好了点到点的连接。当数据传输的性能必须让位于数据传输的完整性、可控制性和可靠性时,TCP协议是最好的选择。 当强调传输性能而不是传输的完整性时,如音频和多媒体应用,UDP是最好的选择。在数据传输时间很短,以至于此前的连接过程成为整个流量主体的情况下,UDP也是一个好的选择,如DNS交换。把SNMP建立在UDP上的部分原因是设计者认为当发生网络阻塞时,UDP 较低的开销使其有更好的机会去传送管理数据。TCP丰富的功能有时会导致不可预料的性能低下。在现有技术中,TCP和UDP两者都不可互相替代。而当前的一些网络通讯处理技术未能全面地覆盖同时进行TCP和UDP通讯的需求,TCP或UDP只能选择其一,而且现有技术中,未能将客户端服务端融为一体,未能实现跨平台windows、linux, winmoble等操作系统的移植等,不能很好满足业务的需要。
发明内容
针对现有技术的缺点,本发明的目的是提供一种能够将TCP、UDP融为一体,并具有良好移植性的支持多平台网络通讯处理系统及方法。为实现上述目的,本发明的一种支持多平台网络通讯处理系统,包括与上层应用系统连接的网络库模块,所述网路库模块中设置有
通道创建模块,用于请求网络库模块创建新通道并执行创建新通道; 通道关闭模块,用于请求网络库模块关闭通道并执行关闭通道; 设置用户数据和回调函数模块,用于设置和保存用户数据和回调函数指针并执行调用回调函数;
网络事件处理模块,设置有相互连接的线程池和印oil模块,用于处理印ollin事件; 通道创建模块、通道关闭模块、设置用户数据和回调函数模块分别与网络事件处理模块连接,设置用户数据和回调函数模块还与上层应用系统连接。作为一种优选方案,还包括保存有通道队列的通道队列模块,其与通道创建模块、 通道关闭模块连接。作为进一步的优选方案,所述通道创建模块创建新通道的具体步骤包括 al.请求网络库模块创建通道,所述通道为TCP通道或UDP通道;
a2.输入新通道参数,所述参数包括IP地址、端口号和协议类型;
a3.创建新通道,根据步骤a2中的参数初始化通道参数,完成端口或EPOLL的加入;a4.将创建的新通道保持到通道队列模块中。作为进一步的优选方案,所述通道关闭模块关闭通道的具体步骤包括 bl.请求网络库模块关闭通道,所述通道为TCP通道或者UDP通道;
b2.输入需要关闭的通道指针;
b3.关闭通道,并释放通道内存资源;
b4.将关闭的通道从通道队列模块中移除。作为另一种优选方案,网络事件处理模块设置有
监听连接模块,与设置用户数据和回调函数模块、通道创建模块连接,用于接收新连接并通知通道创建模块创建新通道;
发送数据模块,与上层应用系统连接,用于将上层应用系统的数据发送至目的方; 通道超时检查模块,与通道队列模块连接,用于检查通道队列模块中通道的活动状态, 超过预定时间唯有通讯记录的通道标记为超时;
接收数据模块,与设置用户数据和回调函数模块连接,用于接收数据并通告设置用户数据和回调函数模块回调通知上层系统;
通道中断模块,与设置用户数据和回调函数模块连接,用于检查通道中断并通过设置用户数据和回调函数模块回调通知上层应用系统;
重新连接模块,与通道中断模块、设置用户数据和回调函数模块连接,用于通道中断后自动重新连接,并将重连结果通过设置用户数据和回调函数模块回调通知上层应用系统。本发明的第二个目的是实现一种支持多平台网络通讯处理方法,包括如下步骤
A.启动一个线程检测印oil,当印oil中响应通道的印olIin事件,将该印olIin事件的响应从epoll中去掉,进入步骤B ;
B.步骤A中的印ollin事件加入到线程池中执行,并返回步骤A;
C.当线程池中有印ollin事件加入,则判断通道是否接收到数据,若有则进入步骤D, 若没有则进入步骤J ;
D.判断接收到数据的通道是否为UDP的服务端通道,若是则进入步骤E,否则进入步骤H;
E.判断接收到数据的通道是否为新通道,若是则进入步骤F,否则进入步骤H;
F.判断当前系统是否达到最大通道数,若是则进入步骤I,否则进入步骤G;
G.创建新通道,进入步骤H;
H.通过回调函数回调通知上层应用系统接收到数据,并进入步骤I;
I.发起下一次数据接收,并返回步骤C;
J.判断通道是否中断,若是则进入步骤H,否则继续加入印oil,等待下次事件响应,结
束;
K.对该中断的通道设置通道中断标志并结束。作为一种优选方案,在步骤J中判断通道中断后,在执行步骤K之前还进行如下步骤
Cl.判断该中断通道是否完成端口退出,若是则结束,否则进入步骤C2 ; c2.判断该中断通道是否存在,若不存在则结束,若存在则进入步骤c3 ; c3.判断该中断通道是否为主动关闭,若是则结束,否则进入步骤K。
作为进一步的优选方案,所述步骤G中创建新通道的具体步骤为 al.请求网络库创建通道,所述通道为TCP通道或UDP通道;
a2.输入新通道参数,所述参数包括IP地址、端口号和协议类型;
a3.创建新通道,根据步骤a2中的参数初始化通道参数,完成端口或EPOLL的加入;
a4.将创建的新通道保持到通道队列中。作为进一步的优选方案,所述通道关闭的具体步骤为
bl.请求网络库关闭通道,所述通道为TCP通道或者UDP通道;
b2.输入需要关闭的通道指针;
b3.关闭通道,并释放通道内存资源;
b4.将关闭的通道从通道队列中移除。作为进一步的优选方案,当所述中断通道不是主动关闭时,则进入步骤K之前还进行自动重新连接步骤,若重连成功则通过回调函数回调通知上层应用系统重连成功并结束,否则通过回调函数回调通知上层应用系统重连失败并进入步骤K。本发明的有益效果是
本发明通过提供一致的epoll外部接口,给上层应用系统提供一个快速、稳定、跨平台的通讯系统和方法,其能达到如下效果
1.能大大提高数据传输的速度和效率,能达到网卡传输能力的90%,使得软件系统有良好的性能。2.具有良好的移植性,能够在windows、liniDuwinmobie等操作系统间无缝移植, 方便软件系统的跨平台应用,节省开放时间、成本,提高软件系统的商用价值。3.将TCP、UDP融合为一体,方便实际应用,可以建立TCP通讯的同时,增加UDP通讯通道,而不需重新初始化相关信息,应用层甚至无需关心是TCP或UDP通讯。4.使用内存池线程池技术,提高系统资源使用率,使得软件获得良好的运行性能, 节约开销。
图1 是本发明一种支持多平台网络通讯处理系统的结构示意图2 是本发明一种支持多平台网络通讯处理系统中网络事件处理模块的结构示意
图3 是本发明一种支持多平台网络通讯处理方法的流程图; 图4 是本发明一种支持多平台网络通讯处理方法的流程图。
具体实施例方式下面结合实施例及附图,对本发明作进一步地详细说明,但本发明的实施方式不限于此。本发明如图1所示,本发明的一种支持多平台网络通讯处理系统,包括与上层应用系统连接的网络库模块,所述网路库模块中设置有通道创建模块、通道关闭模块、设置用户数据和回调函数模块、网络事件处理模块、通道队列模块,通道创建模块、通道关闭模块、设置用户数据和回调函数模块分别与网络事件处理模块连接,设置用户数据和回调函数模块还与上层应用系统连接,通道队列模块与通道创建模块、通道关闭模块连接。通道创建模块,用于请求网络库模块创建新通道并执行创建新通道;创建新通道的具体步骤包括
al.请求网络库模块创建通道,所述通道为TCP通道或UDP通道;
a2.输入新通道参数,所述参数包括IP地址、端口号和协议类型;
a3.创建新通道,根据步骤a2中的参数初始化通道参数,完成端口或EPOLL的加入;
a4.将创建的新通道保持到通道队列模块中。通道关闭模块,用于请求网络库模块关闭通道并执行关闭通道;关闭通道的具体步骤包括
bl.请求网络库模块关闭通道,所述通道为TCP通道或者UDP通道;
b2.输入需要关闭的通道指针;
b3.关闭通道,并释放通道内存资源;
b4.将关闭的通道从通道队列模块中移除。设置用户数据和回调函数模块,用于设置和保存用户数据和回调函数指针并执行调用回调函数。如图2所示,网络事件处理模块,用于处理印ollin事件;其设置有线程池、印oil 模块、监听连接模块、发送数据模块、通道超时检查模块、接收数据模块、通道中断模块、重新连接模块,线程池与印oil模块相互连接。监听连接模块,与设置用户数据和回调函数模块、通道创建模块连接,用于接收新连接并通知通道创建模块创建新通道;
发送数据模块,与上层应用系统连接,用于将上层应用系统的数据发送至目的方; 通道超时检查模块,与通道队列模块连接,用于检查通道队列模块中通道的活动状态, 超过预定时间唯有通讯记录的通道标记为超时;
接收数据模块,与设置用户数据和回调函数模块连接,用于接收数据并通告设置用户数据和回调函数模块回调通知上层系统;
通道中断模块,与设置用户数据和回调函数模块连接,用于检查通道中断并通过设置用户数据和回调函数模块回调通知上层应用系统;
重新连接模块,与通道中断模块、设置用户数据和回调函数模块连接,用于通道中断后自动重新连接,并将重连结果通过设置用户数据和回调函数模块回调通知上层应用系统。 利用该重新连接模块仅当该中断通道为TCP通讯中的客户端通道时。如图3和图4所示,本发明的第二个目的是实现一种支持多平台网络通讯处理方法,包括如下步骤
A.启动一个线程检测印oil,当印oil中响应通道的印olIin事件,将该印olIin事件的响应从epoll中去掉,进入步骤B ;
B.步骤A中的印ollin事件加入到线程池中执行,并返回步骤A;
C.当线程池中有印ollin事件加入,则判断通道是否接收到数据,若有则进入步骤D, 若没有则进入步骤J ;
D.判断接收到数据的通道是否为UDP的服务端通道,若是则进入步骤E,否则进入步骤H;E.判断接收到数据的通道是否为新通道,若是则进入步骤F,否则进入步骤H;
F.判断当前系统是否达到最大通道数,若是则进入步骤I,否则进入步骤G;
G.创建新通道,创建新通道的具体步骤为
al.请求网络库创建通道,所述通道为TCP通道或UDP通道;
a2.输入新通道参数,所述参数包括IP地址、端口号和协议类型;
a3.创建新通道,根据步骤a2中的参数初始化通道参数,完成端口或EPOLL的加入;
a4.将创建的新通道保持到通道队列中,并进入步骤H ;
H.通过回调函数回调通知上层应用系统接收到数据,并进入步骤I;
I.发起下一次数据接收,并返回步骤C;
J.判断通道是否中断,若是则进入步骤cl,否则继续加入印oil,等待下次事件响应, 结束;
cl.判断该中断通道是否完成端口退出,若是则结束,否则进入步骤c2 ; c2.判断该中断通道是否存在,若不存在则结束,若存在则进入步骤c3 ; c3.判断该中断通道是否为主动关闭,若是则结束,否则进入步骤K。K.对该中断的通道设置通道中断标志并结束。步骤c3中通道关闭的具体步骤为
bl.请求网络库关闭通道,所述通道为TCP通道或者UDP通道;
b2.输入需要关闭的通道指针;
b3.关闭通道,并释放通道内存资源;
b4.将关闭的通道从通道队列中移除。此外,当所述中断通道不是主动关闭时,则进入步骤K之前还进行自动重新连接步骤,若重连成功则通过回调函数回调通知上层应用系统重连成功并结束,否则通过回调函数回调通知上层应用系统重连失败并进入步骤K。
权利要求
1.一种支持多平台网络通讯处理系统,其特征在于,包括与上层应用系统连接的网络库模块,所述网路库模块中设置有 通道创建模块,用于请求网络库模块创建新通道并执行创建新通道; 通道关闭模块,用于请求网络库模块关闭通道并执行关闭通道; 设置用户数据和回调函数模块,用于设置和保存用户数据和回调函数指针并执行调用回调函数;网络事件处理模块,设置有相互连接的线程池和印oil模块,用于处理印ollin事件; 通道创建模块、通道关闭模块、设置用户数据和回调函数模块分别与网络事件处理模块连接,设置用户数据和回调函数模块还与上层应用系统连接。
2.根据权利要求1所述的支持多平台网络通讯处理系统,其特征在于,还包括保存有通道队列的通道队列模块,其与通道创建模块、通道关闭模块连接。
3.根据权利要求2所述的支持多平台网络通讯处理系统,其特征在于,所述通道创建模块创建新通道的具体步骤包括al.请求网络库模块创建通道,所述通道为TCP通道或UDP通道;a2.输入新通道参数,所述参数包括IP地址、端口号和协议类型;a3.创建新通道,根据步骤a2中的参数初始化通道参数,完成端口或EPOLL的加入;a4.将创建的新通道保持到通道队列模块中。
4.根据权利要求2所述的支持多平台网络通讯处理系统,其特征在于,所述通道关闭模块关闭通道的具体步骤包括bl.请求网络库模块关闭通道,所述通道为TCP通道或者UDP通道;b2.输入需要关闭的通道指针;b3.关闭通道,并释放通道内存资源;b4.将关闭的通道从通道队列模块中移除。
5.根据权利要求1所述的支持多平台网络通讯处理系统,其特征在于,网络事件处理模块还设置有监听连接模块,与设置用户数据和回调函数模块、通道创建模块连接,用于接收新连接并通知通道创建模块创建新通道;发送数据模块,与上层应用系统连接,用于将上层应用系统的数据发送至目的方; 通道超时检查模块,与通道队列模块连接,用于检查通道队列模块中通道的活动状态, 超过预定时间唯有通讯记录的通道标记为超时;接收数据模块,与设置用户数据和回调函数模块连接,用于接收数据并通告设置用户数据和回调函数模块回调通知上层系统;通道中断模块,与设置用户数据和回调函数模块连接,用于检查通道中断并通过设置用户数据和回调函数模块回调通知上层应用系统;重新连接模块,与通道中断模块、设置用户数据和回调函数模块连接,用于通道中断后自动重新连接,并将重连结果通过设置用户数据和回调函数模块回调通知上层应用系统。
6.一种支持多平台网络通讯处理方法,其特征在于,包括如下步骤A.启动一个线程检测印oil,当印oil中响应通道的印olIin事件,将该印olIin事件的响应从epoll中去掉,进入步骤B ;B.步骤A中的印ollin事件加入到线程池中执行,并返回步骤A;C.当线程池中有印ollin事件加入,则判断通道是否接收到数据,若有则进入步骤D, 若没有则进入步骤J ;D.判断接收到数据的通道是否为UDP的服务端通道,若是则进入步骤E,否则进入步骤H;E.判断接收到数据的通道是否为新通道,若是则进入步骤F,否则进入步骤H;F.判断当前系统是否达到最大通道数,若是则进入步骤I,否则进入步骤G;G.创建新通道,进入步骤H;H.通过回调函数回调通知上层应用系统接收到数据,并进入步骤I;I.发起下一次数据接收,并返回步骤C;J.判断通道是否中断,若是则进入步骤H,否则继续加入印oil,等待下次事件响应,结束;K.对该中断的通道设置通道中断标志并结束。
7.根据权利要求6所述的支持多平台网络通讯处理方法,其特征在于, 在步骤J中判断通道中断后,在执行步骤K之前还进行如下步骤cl.判断该中断通道是否完成端口退出,若是则结束,否则进入步骤c2 ; c2.判断该中断通道是否存在,若不存在则结束,若存在则进入步骤c3 ; c3.判断该中断通道是否为主动关闭,若是则结束,否则进入步骤K。
8.根据权利要求7所述的支持多平台网络通讯处理方法,其特征在于,所述步骤G中创建新通道的具体步骤为al.请求网络库创建通道,所述通道为TCP通道或UDP通道;a2.输入新通道参数,所述参数包括IP地址、端口号和协议类型;a3.创建新通道,根据步骤a2中的参数初始化通道参数,完成端口或EPOLL的加入;a4.将创建的新通道保持到通道队列中。
9.根据权利要求7所述的支持多平台网络通讯处理方法,其特征在于,所述通道关闭的具体步骤为bl.请求网络库关闭通道,所述通道为TCP通道或者UDP通道;b2.输入需要关闭的通道指针;b3.关闭通道,并释放通道内存资源;b4.将关闭的通道从通道队列中移除。
10.根据权利要求7所述的支持多平台网络通讯处理方法,其特征在于,当所述中断通道不是主动关闭时,则进入步骤K之前还进行自动重新连接步骤,若重连成功则通过回调函数回调通知上层应用系统重连成功并结束,否则通过回调函数回调通知上层应用系统重连失败并进入步骤K。
全文摘要
本发明属于网络通信领域,具体涉及一种支持多平台网络通讯处理系统及方法。系统包括与上层应用系统连接的网络库模块,网路库模块中设置有通道创建模块,用于请求网络库模块创建新通道并执行创建新通道;通道关闭模块,用于请求网络库模块关闭通道并执行关闭通道;设置用户数据和回调函数模块,用于设置和保存用户数据和回调函数指针并执行调用回调函数;网络事件处理模块,设置有相互连接的线程池和epoll模块,用于处理epollin事件;通道创建模块、通道关闭模块、设置用户数据和回调函数模块分别与网络事件处理模块连接,设置用户数据和回调函数模块还与上层应用系统连接。本发明能够将TCP、UDP融为一体,并具有良好移植性。
文档编号H04L29/06GK102316116SQ20111029226
公开日2012年1月11日 申请日期2011年9月29日 优先权日2011年9月29日
发明者陈聪 申请人:广东高新兴通信股份有限公司