本发明专利技术涉及一种网络实体接口状态维护的方法,该方法包括:收线程及发线程在重建连接时对接口状态的切换进行记录,收线程在检测到网络连接异常时,根据切换记录判断是否重新建立连接。设置对状态切换进行标识的序列号,收线程及发线程在重建连接时修改该序列号。收线程在检测到网络连接异常时,判断当前的序列号与记录的序列号是否相同,若相同,则重建连接。发线程在检测到网络连接异常时,判断当前的序列号与记录的序列号是否相同,若相同,则重建连接。本发明专利技术实现了根据接口状态的切换记录判断是否重建连接,从而可有效避免接口状态的无谓迁移,并可节约系统资源,提高系统效率和可靠性。
【技术实现步骤摘要】
本专利技术涉及,尤其是一种网络实体接口通过收线程和发线程维护接口连接状态的方法。
技术介绍
在网络实体互联时,通常通过套接字(socket)的输入输出流进行数据交换。端设备通过输出流发送数据到对端,通过输入流读取对端发来的数据,由于需要对输入输出两个方向的数据分别处理,一般的设备会分不同线程来实现上述两种操作,在收、发线程中同时维护连接的状态。收线程则等待读取对端数据,当网络连接异常时,收线程会检测到连接异常,从而进行状态的迁移和维护。如图1所示,为现有技术中收线程在连接异常时进行状态维护的方法流程图,包括如下步骤步骤11、收线程重建连接,在重建连接的过程中,进行连接状态变更;步骤12、收线程等待读取数据,有数据则读取并解析。发线程负责在应用层有数据发送到对端时,检测连接状态,若连接状态正常,则发送数据,若连接状态异常,重新建立连接发送数据。如图2所示,为现有技术中发线程发送数据的方法流程图,包括如下步骤步骤21、发线程在发送数据前,检测网络连接状态;步骤22、发线程判断网络连接是否异常,若异常,执行步骤23,否则,执行步骤24;步骤23、发线程重建连接,在重建连接的过程中,进行连接状态变更;步骤24、发线程发送数据,若在发送数据过程中网络连接异常,执行步骤23。网络接口通过收线程和发线程接收和发送数据,收发线程共同维护连接状态,当发生网络异常时,各线程同步维护连接状态。在一般情况下,网络发生异常时,收线程最先检测到错误,并恢复物理连接,保证在发线程发送数据时,网络连接是正常的。但在极少数情况下,网络正好在发送数据时发生异常,此时发线程检测到网络异常后,为了保证数据发送的可靠性,会重新建立物理连接发送数据,与此同时,收线程也会发现网络异常,于是在发线程重建物理连接的过程中,收线程可能也去完成这个重建动作,两边都在维护连接状态,造成状态被重复迁移。例如,在步骤21中发线程检测到网络连接状态正常,而执行步骤24中,网络连接发生异常,此时,发线程和收线程都会检测到网络连接异常,发线程会执行步骤23,重新建立连接,而收线程会执行11,重新建立连接,于是会出现重复建连接的情况,而实际上只需要发线程建立连接就可以了。虽然这种重复建立连接对发送接收数据功能没有影响,但无谓地耗费了系统性能。
技术实现思路
本专利技术的目的在于针对现有技术中,在多线程同时维护网络实体的连接状态时,可能出现的一次连接异常导致多次状态迁移的问题,提供,避免状态的无谓迁移,节约系统资源,提高系统效率和可靠性。为了实现上述目的,本专利技术提供了,该方法包括收线程及发线程在重建连接时对接口状态的切换进行记录,收线程在检测到网络连接异常时,根据切换记录判断是否重新建立连接。可设置一对状态切换进行标识的序列号,收线程及发线程在重建连接时,通过修改该序列号来记录接口状态的切换。修改序列号可为将序列号递增或将序列号设置为一随机产生的值。所述的收线程在检测到网络连接异常时,根据切换记录判断是否需要重建连接的步骤具体为收线程检测到网络连接异常时,判断当前的序列号与记录的序列号是否相同,若相同,则需要重建连接,若不同,则不需重建连接。本方法还包括所述的发线程在检测到网络连接异常时,根据切换记录判断是否需要重建连接。该步骤具体为发线程检测到网络连接异常时,判断当前的序列号与记录的序列号是否相同,若相同,则需要重建连接,若不同,则不需重建连接。本专利技术实现了根据接口状态的切换记录判断是否重建连接,从而可有效避免接口状态的无谓迁移,并可节约系统资源,提高系统效率和可靠性。下面通过附图和实施例,对本专利技术的技术方案做进一步的详细描述。附图说明图1为现有技术中收线程在连接异常时进行状态维护的方法流程图;图2为现有技术中发线程发送数据的方法流程图;图3为本专利技术的收线程在连接异常时进行状态维护的方法流程图;图4为本专利技术的发线程发送数据流程图;图5为本专利技术的发线程在连接异常时根据序列号进行状态维护的方法流程图。具体实施例方式在网络实体接口状态维护时,重建连接的过程是不可重入的,也就是说当收线程重建连接时,发线程无法重建连接,而当发线程重建连接时,收线程也无法进入重建连接的过程。因此,可对接口状态的切换进行记录,实现线程间接口状态的同步,避免无谓的状态迁移。在维护网络接口的状态时,一般是通过特定的数值、对象等形式来表示某个状态,不论网络接口的状态以何种方式表示,都可以在这个表示方法上增加一个纬度,用于对状态切换进行记录。例如,当某系统通过数值来表示一个网络接口的状态时STATUS=0表示初始化;STATUS=1表示连接状态;STATUS=2表示断开状态,增加切换记录的状态可以通过一维数组STATUS[]表示,STATUS为状态值,STATUS为状态的切换记录;当某系统通过对象来表示状态时STATUS.STATE=INIT表示初始化;STATUS.STATE=CONNECTED表示连接状态;STATUS.STATE=DISCONNECTED表示断开状态,那么,可以在STATUS中增加成员STATUS.SEQUENCEID来记录状态的切换。切换记录可以序列号表示。序列号可为通过整数或可以转换成数字的字符串表示,当连接状态进行切换时,修改序列号并记录到状态中。序列号的修改可以为序列号递增,或者为将序列号设置为一随机产生的值。切换记录也可通过其他方式表示,只要保证在状态切换时,能将切换记录修改为与当前记录不同的值即可。下面对根据序列号进行接口状态维护的方法进行详细说明。如图3所示,为收线程在连接异常时进行状态维护的方法流程图,执行以下步骤步骤101、当连接异常时,收线程判断当前的序列号是否与记录的发生异常前的序列号相同,若相同,执行步骤102,否则,执行步骤103;如果相同,说明发线程没有重建连接,状态没有迁移,所以收线程需要执行重建连接的步骤。如果不同,说明发线程已经重新建立连接,因此,收线程不需重建连接。步骤102、收线程重建连接,进行连接状态变更,并修改序列号;序列号的修改可以为递增,或是设置为一随机生成的值。步骤103、收线程进入等待读数据状态,并记录当前的序列号;步骤104、收线程等待读数据,有数据则读取并解析;如图4所示,为发线程发送数据流程图,在有数据需要发送时,发线程执行以下步骤步骤201、发线程检测连接状态;步骤202、发线程判断连接是否异常,若异常,执行步骤203,否则,执行步骤204;步骤203、发线程重建连接,进行连接状态变更,并修改序列号; 步骤204、发线程发送数据。由于收线程一直阻塞等待接受数据,一旦连接发生异常,大部分情况都是收线程最先发现,并且将连接重新建立成功。因此,发线程在发送数据时,大部分情况下连接是正常的,只有极少的情况下,在发送消息的时刻,连接发生异常,发送线程才能感知连接异常,经过测试,在这种情况下一般都是发线程最先将连接建好。但是,如果是收线程先建好,那么还会发生状态的无谓迁移,因此,可在发线程也加入对序列号的判断,从而,能更为有效地避免状态的无谓迁移。如图5所示,为发线程在连接异常时根据序列号进行状态维护的方法流程图。发线程在数据需要发送时,若遇到连接异常的情况,执行以下步骤步骤301、发线程判断当前的序列号是否与发生异常前记录的序列本文档来自技高网...
【技术保护点】
一种网络实体接口状态维护的方法,其特征在于,该方法包括:收线程及发线程在重建连接时对接口状态的切换进行记录,收线程在检测到网络连接异常时,根据切换记录判断是否重新建立连接。
【技术特征摘要】
【专利技术属性】
技术研发人员:张磊,张婧,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:94[中国|深圳]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。