监控程序中利用可靠与非可靠网络的主从通信方法及系统的制作方法
【专利摘要】本发明公开了监控程序中利用可靠与非可靠网络的主从通信方法及系统。该方法包括:为监控程序构建通信线程,设置所述通信线程的套接字以及与该套接字相对应的报文类型,其中,所述报文类型包括基于TCP可靠网络协议的报文类型以及基于UDP非可靠网络协议的报文类型;将目标板的IP地址与各个套接字的端口进行绑定;轮询各个套接字的操作状态,在检测到套接字的端口就绪时,从该套接字的端口读取数据,获取应用层数据包;处理该应用层数据包,并将处理的结果写入该套接字的描述符内进行信息交互。采用本发明,可以保证通信可靠性的同时,提供监控系统除传统串口方式以外利用网口通信的方式来增加网络通信的效率。
【专利说明】监控程序中利用可靠与非可靠网络的主从通信方法及系统
【技术领域】
[0001]本发明涉及网络通信技术,特别是涉及监控程序中利用可靠与非可靠网络的主从通信方法及系统。
【背景技术】
[0002]目前,DF1D (Digital Pre-Distortion,数字预失真)功放在工程上运行,必须要保持功放能够与主机通信正常,这样才能对功放起到控制,进而起到通过OMC (Operations &Maintenance Center,操作维护中心)监控远程从机的目的。如果采用传统的RS485串口通信方式,一方面受限于速度,如果要下载监控程序将是费时又费力的工作,另一方面,随着监控内容增多,监控目标码逐渐增大,为保证通信质量,可靠性要求也越来越高,利用串口的传统技术必须得到提高和改进。
[0003]目前随着互联网技术的不断发展,基于网口的TCP/IP通信技术越来越成熟。为了改善通信过程中串口对速度瓶颈的制约,有效提高通信任务的吞吐量和健壮性,有必要在监控系统中引入TCP/IP技术。
[0004]但是一般基于网口的网络通信处理都比较大的数据流量,采用一般的server/client结构会给系统监控任务带来不必要的负担,阻碍了通信效率的提高。
【发明内容】
[0005]基于此,有必要针对上述问题,提供一种监控程序中利用可靠与非可靠网络的主从通信方法及系统,能够保证通信可靠性的同时提高通信的效率。
[0006]一种监控程序中利用可靠与非可靠网络的主从通信方法,包括:
[0007]为监控程序构建通信线程,设置所述通信线程的套接字以及与该套接字相对应的报文类型,其中,所述报文类型包括基于TCP可靠网络协议的报文类型以及基于UDP非可靠网络协议的报文类型;
[0008]将目标板的IP地址与各个套接字的端口进行绑定;
[0009]轮询各个套接字的操作状态,在检测到套接字的端口就绪时,从该套接字的端口读取数据,获取应用层数据包;
[0010]处理该应用层数据包,并将处理的结果写入该套接字的描述符内进行信息交互。
[0011]相应地,一种监控程序中利用可靠与非可靠网络的主从通信系统,包括:
[0012]线程构建模块,用于为监控程序构建通信线程,设置所述通信线程的套接字以及与该套接字相对应的报文类型,其中,所述报文类型包括基于TCP可靠网络协议的报文类型以及基于UDP非可靠网络协议的报文类型;
[0013]与所述线程构建模块相连的端口绑定模块,用于将目标板的IP地址与各个套接字的端口进行绑定;
[0014]与所述端口绑定模块相连的端口轮询模块,用于轮询各个套接字的操作状态;
[0015]与所述端口轮询模块相连的端口读取模块,用于在检测到套接字的端口就绪时,巨可靠网络的主从通信方法的流程图;非可靠网络的主从通信方法的实施例示意
非可靠网络的主从通信方法的实施例流程
巨可靠网络的主从通信系统的示意图;非可靠网络的主从通信系统的实施例示意
[加清楚,下面将结合附图对本发明作进一非可靠网络的主从通信方法的流程图,包建立在可靠的TCP/IP技术的基础上进行的,无论是面向连接的TCP协议还是用户数据报UDP协议,都能够降低数据在传输过程中出错的概率。相比于传统技术中没有校验功能的串口通信方式,本发明能够提高通信任务的可靠性。
[0031]除了上述利用软件协议提高通信可靠性之外,从结合硬件效率来说,在操作系统启动后,目标数字板将网卡的IP地址设置为预先存储在配置文件的IP地址,该IP地址是人为设置以便于目标板与图形用户界面(GUI)和或远程主机通信。当监控程序创建通信服务线程后,将通信服务线程的套接口和该IP地址通过调用bind系统函数绑定在一起,经过TCP/IP协议对数据的分类,通信线程只需要处理到达绑定套接字的数据,例如本监控程序的通信服务线程只接受绑定TCP套接字端口的数据和UDP套接字端口的数据。在该监控平台下硬件是百兆网卡,传输速率理想情况下为lOMbyte/s,数据传输速度相比于串口通信效率提升了大约1000倍。
[0032]图2为本发明监控程序中利用可靠与非可靠网络的主从通信方法的实施例示意图。由图2可知,它不再是传统串口方式的一对一的连接,而是一对多的连接方式,即通信服务线程(server)与多个外部程序(⑶I/0MC/0MT)进行连接。通过轮询套接字的readset(也即读集),在同一时刻检测多个人机交互界面软件或网管中心的模调工具的通信连接。
[0033]需要补充说明的是,虽然外部程序(GUI/0MC/0MT)有多个,如图2所举例子有五个(⑶1_1至⑶1_5),但是,本通信任务只有一个线程,该通信服务线程采用端口复用的策略,不增加子线程,尽量降低通信任务给整个系统带来的开销。在检测到套接字的端口就绪时,从该套接字的端口读取数据,获取应用层数据包。处理该应用层数据包,并将处理的结果写入该套接字的描述符内进行信息交互。
[0034]图3为本发明监控程序中利用可靠与非可靠网络的主从通信方法的实施例流程图。与图1相比,图3的为本发明优选的实施方式示意图。
[0035]S201:针对内核发出的SIGPIPE信号,为所述通信线程配置处理回调函数。避免本线程因所述SIGPIPE信号而关闭。
[0036]S202:为监控程序构建通信线程,设置所述通信线程的套接字以及与该套接字相对应的报文类型。其中,所述报文类型包括基于TCP可靠网络协议的报文类型以及基于UDP非可靠网络协议的报文类型。
[0037]S203:将基于TCP协议的套接字的描述字属性设置为S0_REUSEADDR。
[0038]S204:将基于TCP协议的套接字的轮询模式,以及将基于UDP协议的套接字的轮询模式均设置为非阻塞形式。
[0039]S205:将目标板的IP地址与各个套接字的端口进行绑定。
[0040]将套接字描述符写入到readset中,采用select命令轮询各个套接字。
[0041]S206:轮询各个套接字的操作状态,在检测到套接字的端口就绪时,从该套接字的端口读取数据,获取应用层数据包。
[0042]S207:处理该应用层数据包,并将处理的结果写入该套接字的描述符内进行信息交互。
[0043]S208:设置该套接字的描述符集为读操作。重新轮询各个套接字的操作状态。
[0044]以下结合ARM9硬件平台,并加载Linux系统作为基础,对本发明实施例展开说明。Linux作为一款多任务操作系统,监控程序是运行在该系统上的一个应用程序,而通信服务线程则是所述监控程序的一个线程。故本发明的实现方式不限于上述硬件平台或软件基础,仅以此为例。
[0045]实现方式上,在物理层基于网口的以太网,通过以太网协议编写以太网的网卡驱动程序,将通信数据交由Linux内核,Linux内核中的协议栈TCP/IP协议来保证数据在IP层和传输层的可靠性,数据经过Linux内核处理之后传递给应用层的客户程序,在此为监控程序进程的通信服务线程来处理。
[0046]本发明的又一优势在于,该通信服务线程既可以处理基于TCP协议的数据包,又可以处理基于UDP协议的数据包。这样,一方面为了保证通信任务的可靠性,另一方面又不过多增加系统的开销,因此这里无需通过类似forkO函数来创建真正处理数据的子线程,而是只有一条主线程——通信服务线程,既实现数据的接收又实现数据的处理。对于创建在监控程序下的通信服务线程来说,收到的原始数据包通过TCP/IP协议解析得到的应用层数据包,再依据相关协议(例如CSP3协议)对该应用层数据包进行解析。利用TCP/IP协议提供的端口复用技术,能实现多个人机交互界面软件或网管中心的模调工具通过网口连接监控系统的通信线程,实现通过通信任务查询或设置监控量来控制监控程序的功能。图3的实施例步骤是上述实现方式的细化,其中,S201至S205为通信线程的初始化步骤。
[0047]当通信线程没收到可执行“写操作”的套接字的时候,Linux内核会向该进程发送一个SIGPIPE信号,如果不捕捉该信号而采用系统默认的行为,那么进程会自动终止,为了避免监控进程的通信线程终止,进而影响监控进程对整个平台的控制功能,有必要对SIGPIPE信号设置处理回调函数忽略该信号。
[0048]对于TCP套接字的描述字,将其属性设置为S0_REUSEADDR,这个套接字选项通知内核,如果端口忙,但TCP状态位于TIME_WAIT,可以重用端口。如果端口忙,而TCP状态位于其他状态,重用端口时依旧得到一个错误信息,指明“地址已经使用中”。如果你的服务程序停止后想立即重启,而新套接字依旧使用同一端口,此时S0_REUSEADDR选项非常有用。利用IP地址复用的属性为了达到在操作系统不重启的情况下再次重启监控系统能实现基于网络的通信能够正常使用的目的。另外,对于面向连接的TCP协议,由于Linux内核为任何一个给定的监听套接字维护两个队列,一个是未完成连接队列,另一个是已完成的连接队列。为了能够降低网络服务器在监控系统中的开销,则需要设置监听套接字的最大连接个数,如果通信线程的连接数多于设置的最大连接个数,则通信线程将放弃一些连接请求,该功能通过IistenO系统函数能够实现。
[0049]TCP套接字和UDP套接字均以非阻塞的形式得到准备就绪。关于非阻塞的形式是相对于阻塞形式来讲的,当所请求的I/o操作非得把本线程投入到睡眠才能完成,则不要投入到睡眠,而是返回一个错误,无需等待。当系统调度执行通信线程的时候,判断是否有准备就绪的套接字以便执行数据获取操作。采取这样的方式,可以进一步减小服务器的开销,降低服务器的负荷。
[0050]通信线程初始化之后,利用I/O端口复用技术,通过轮询安设置好的TCP套接字/UDP套接字,实现同一个通信服务线程既可以实现面向连接的TCP可靠通信,也可以实现用户数据报UDP通信,而通过select函数,将本身应该阻塞在I/O系统调用的操作,阻塞在了该系统调用上,不过本监控通信线程的实现方式是:对于二者都是采用非阻塞的模式,等待下一次轮询调用检查是否有套接字准备就绪。类型包括基于扣?可靠网络协议的报文类
漠块,用于将目标板的I?地址与各个套接
I块,用于轮询各个套接字的操作状态;摸块,用于在检测到套接字的端口就绪时,
摸块,用于在处理该应用层数据包后,将处I:。
行方式与方法中的相同。
可靠网络的主从通信系统的实施例示意图。
信号,为所述通信线程配置处理回
0
议的套接字的描述字属性设置为
【权利要求】
1.一种监控程序中利用可靠与非可靠网络的主从通信方法,其特征在于,包括: 为监控程序构建通信线程,设置所述通信线程的套接字以及与该套接字相对应的报文类型,其中,所述报文类型包括基于TCP可靠网络协议的报文类型以及基于UDP非可靠网络协议的报文类型; 将目标板的IP地址与各个套接字的端口进行绑定; 轮询各个套接字的操作状态,在检测到套接字的端口就绪时,从该套接字的端口读取数据,获取应用层数据包; 处理该应用层数据包,并将处理的结果写入该套接字的描述符内进行信息交互。
2.根据权利要求1所述的监控程序中利用可靠与非可靠网络的主从通信方法,其特征在于,为监控程序构建通信线程的步骤之前,包括: 针对内核发出的SIGPIPE信号,为所述通信线程配置处理回调函数,避免本线程因所述SIGPIPE信号而关闭。
3.根据权利要求1或2所述的监控程序中利用可靠与非可靠网络的主从通信方法,其特征在于: 将基于TCP协议的套接字的描述字属性设置为SO_REUSEADDR。
4.根据权利要求1 至3任一项所述的监控程序中利用可靠与非可靠网络的主从通信方法,其特征在于: 将基于TCP协议的套接字的轮询模式,以及将基于UDP协议的套接字的轮询模式均设置为非阻塞形式。
5.根据权利要求4所述的监控程序中利用可靠与非可靠网络的主从通信方法,其特征在于,将处理的结果写入该套接字的描述符内进行信息交互的步骤之后,还包括: 设置该套接字的描述符集为读操作,重新轮询各个套接字的操作状态。
6.一种监控程序中利用可靠与非可靠网络的主从通信系统,其特征在于,包括: 线程构建模块,用于为监控程序构建通信线程,设置所述通信线程的套接字以及与该套接字相对应的报文类型,其中,所述报文类型包括基于TCP可靠网络协议的报文类型以及基于UDP非可靠网络协议的报文类型; 与所述线程构建模块相连的端口绑定模块,用于将目标板的IP地址与各个套接字的端口进行绑定; 与所述端口绑定模块相连的端口轮询模块,用于轮询各个套接字的操作状态; 与所述端口轮询模块相连的端口读取模块,用于在检测到套接字的端口就绪时,从该套接字的端口读取数据,获取应用层数据包; 与所述端口轮询模块相连的端口写入模块,用于在处理该应用层数据包后,将处理的结果写入该套接字的描述符内进行信息交互。
7.根据权利要求6所述的监控程序中利用可靠与非可靠网络的主从通信系统,其特征在于,所述线程构建模块,包括: 信号屏蔽单元,用于针对内核发出的SIGPIPE信号,为所述通信线程配置处理回调函数,避免本线程因所述SIGPIPE信号而关闭。
8.根据权利要求6或7所述的监控程序中利用可靠与非可靠网络的主从通信系统,其特征在于,所述线程构建模块,包括:属性设置单元,用于将基于TCP协议的套接字的描述字属性设置为SO_REUSEADDR。
9.根据权利要求6至8任一项所述的监控程序中利用可靠与非可靠网络的主从通信系统,其特征在于,所述端口轮询模块,包括: 模式设置单元,用于将基于TCP协议的套接字的轮询模式,以及将基于UDP协议的套接字的轮询模式均设置为非阻塞形式。
10.根据权利要求9所述的监控程序中利用可靠与非可靠网络的主从通信系统,其特征在于,还包括: 连接在所述端口写入模块与所述端口轮询模块之间的操作切换单元,用于设置该套接字的描述符集为读操作,重新轮询各个套接字的操作状态。
【文档编号】H04L29/08GK103841148SQ201210484612
【公开日】2014年6月4日 申请日期:2012年11月23日 优先权日:2012年11月23日
【发明者】罗志祺 申请人:京信通信系统(中国)有限公司