网络通信方法和系统与流程

文档序号:12162123阅读:443来源:国知局
网络通信方法和系统与流程

本发明涉及数据传输领域,特别是涉及一种网络通信方法和系统。



背景技术:

当主控服务器需要跟多个信号发生器进行通信时,传统的做法是主控服务器给每个信号发生器都分配固定的时间片,在这种做法下,当某些信号发生器与主控服务器间几乎没有数据传输或者二者传输的数据量很少时,依然分配了固定的时间片给信号发生器,这样就会导致其它拥有大量数据传输的信号发生器只能进行等待,严重影响了主控服务器和信号发生器之间的传输效率。

若是采用当信号发生器与主控服务器之间没有数据传输时不分配运行时间片的做法,则会导致信号发生器因长时间与主控服务器之间没有数据交互而掉线,两者的通信的实时性又无法得到保障。



技术实现要素:

基于此,有必要提供一种网络通信方法,其能提高服务器与多客户端的传输效率,并确保通信的实时性。

此外,还有必要提供一种网络通信系统,其能提高服务器与多客户端的传输效率,并确保通信的实时性。

一种网络通信方法,包括以下步骤:

通过预先创建的管理容器分别给每个与服务器连接的客户端建立任务,并将建立的任务加入到所述管理容器的任务队列中;

通过所述管理容器根据每个客户端的通信数据量动态给各个客户端分配任务运行时间片;

每隔第一设置时间向每个客户端发送一次心跳包。

在其中一个实施例中,所述方法还包括步骤:

设置所述客户端的最小运行时间片;

设置所述客户端的最大运行时间片,其中,所述任务运行时间片大于或等于最小运行时间片,且小于或等于最大运行时间片。

在其中一个实施例中,所述通过所述管理容器根据每个客户端的通信数据量动态给各个客户端分配任务运行时间片的步骤包括:

通过所述管理容器给每个任务分配固定运行时间片;

轮询运行所述任务队列中的任务;

判断各个任务是否在当前任务运行时间片内将数据处理完,若否,则所述管理容器剥夺该任务的运行权,然后将运行权交给下一个任务,并将该任务的当前任务运行时间片加上第二设置时间作为下次的任务运行时间片分配给该任务;

若是,则所述管理容器剥夺该任务的运行权,然后将运行权交给下一个任务,并将该任务的本次耗时作为下次的任务运行时间片分配给该任务。

在其中一个实施例中,所述方法还包括步骤:

设置N个机会运行时间片,其中,当所述客户端的数量小于或等于2时,N为0,当所述客户端的数量大于2且小于或等于10时,N为1,当所述客户端的数量大于10且小于或等于100时,N为2,当所述客户端的数量大于100时,N为3;

通过所述管理容器将所述机会运行时间片分配给拥有最大运行时间片且连接最早的客户端,分配数量为所述机会运行时间片的数量N。

在其中一个实施例中,所述设置所述客户端的最大运行时间片的步骤包括:

确定总轮询数量,当所述机会运行时间片的数量N为0时,所述总轮询数量为所述客户端的数量,当所述机会运行时间片的数量N不为0时,所述总轮询数量为所述客户端的数量与所述机会运行时间片的数量N之和;

根据所述总轮询数量动态设置最大运行时间片,所述最大运行时间片与所述总轮询数量成线性相关。

一种网络通信系统,包括:

任务建立模块,用于通过预先创建的管理容器分别给每个与服务器连接的 客户端建立任务,并将建立的任务加入到所述管理容器的任务队列中;

分配模块,用于通过所述管理容器根据每个客户端的通信数据量动态给各个客户端分配任务运行时间片;

心跳包模块,用于每隔第一设置时间每个客户端发送一次心跳包。

在其中一个实施例中,所述系统还包括:

最小时间片设置模块,用于设置所述客户端的最小运行时间片;

最大时间片设置模块,用于设置所述客户端的最大运行时间片,其中,所述任务运行时间片大于或等于最小运行时间片,且小于或等于最大运行时间片。

在其中一个实施例中,所述分配模块还包括:

固定时间片分配子模块,用于通过所述管理容器给每个任务分配固定运行时间片;

轮询子模块,用于轮询运行所述任务队列中的任务;

运行时间片调整子模块,用于通过所述管理容器给各个任务调整下次的任务运行时间片,所述运行时间片调整子模块的调整形式为判断各个任务是否在当前任务运行时间片内将数据处理完,若否,则所述管理容器剥夺该任务的运行权,然后将运行权交给下一个任务,并将该任务的当前任务运行时间片加上第二设置时间作为下次任务运行时间片分配给该任务,若是,则所述管理容器剥夺该任务的运行权,然后将运行权交给下一个任务,并将该任务的本次耗时作为下次的任务运行时间片分配给该任务。

在其中一个实施例中,所述系统还包括:

机会时间片设置模块,用于设置N个机会运行时间片,所述机会时间片设置模块设置数量N的形式为当所述客户端的数量小于或等于2时,N为0,当所述客户端的数量大于2且小于或等于10时,N为1,当所述客户端的数量大于10且小于或等于100时,N为2,当所述客户端的数量大于100时,N为3;

机会时间片分配模块,用于通过所述管理容器将所述机会运行时间片分配给拥有最大运行时间片且连接最早的客户端,分配数量为所述机会运行时间片的数量N。

在其中一个实施例中,所述最大时间片设置模块包括:

总轮询数量确定子模块,用于确定所述总轮询数量,当所述机会运行时间片的数量N为0时,所述总轮询数量为所述客户端的数量,当所述机会运行时间片的数量N不为0时,所述总轮询数量为所述客户端的数量与所述机会运行时间片的数量N之和;

动态设置子模块,用于根据所述总轮询数量动态设置最大运行时间片,所述最大运行时间片与所述总轮询数量成线性相关。

上述网络通信方法和系统,服务器通过预先建立的管理容器为与服务器连接的客户端建立任务并将任务加入到管理容器的任务队列中后,轮询进行任务运行,使管理容器根据客户端的数据量动态为客户端分配运行时间片,提高了服务器与客户端之间网络通信的效率,避免客户端进行不必要的等待,让资源得到最合理的利用。同时,服务器定时向客户端发送心跳包,防止客户端与服务器因长时间没有数据传输而掉线,保证了通信的实时性。

服务器还通过设置最小运行时间片、最大运行时间片和N个机会运行时间片来实现服务器与多客户端数据传输的均衡。

【附图说明】

图1为一个实施例中网络通信方法的流程示意图;

图2为另一个实施例中网络通信方法的流程示意图;

图3为一个实施例中管理容器动态分配任务运行时间片的流程示意图;

图4为一个实施例中网络通信系统的结构示意图;

图5为另一个实施例中网络通信系统的结构示意图;

图6为一个实施例中分配模块的结构示意图。

【具体实施方式】

下面结合附图及具体的实施例对本发明的技术方案进行详细的描述。

如图1所示,在一个实施例中,一种网络通信方法,包括以下步骤:

步骤S110,通过预先创建的管理容器分别给每个与服务器连接的客户端建立任务,并将建立的任务加入到管理容器的任务队列中。

具体的,服务器为主控服务器,客户端为信号发生装置客户端,服务器创建管理容器专门用于管理客户端,管理容器为每个客户端建立任务,任务包含客户端的运行状态、运行时间片等属性。任务被加入到任务队列中,管理容器负责对任务队列中的所有任务进行调度和管理。

步骤S120,通过管理容器根据每个客户端的通信数据量动态给各个客户端分配任务运行时间片。

步骤S130,每隔第一设置时间向每个客户端发送一次心跳包。

具体的,心跳包所携带的数据很小,并不会占用太多的资源,第一设置时间不过能长,也不能过短,发送心跳包时间间隔过长会导致客户端因长时间与服务器没有数据传输而掉线,时间间隔过短会增加网络传输的负担。如第一设置时间取为3000ms(毫秒),则服务器每隔3000ms向已建立连接的每个客户端发送一次心跳包。

上述网络通信方法,服务器通过预先建立的管理容器为与服务器连接的客户端建立任务并将任务加入到管理容器的任务队列中后,轮询进行任务运行,使管理容器根据客户端的数据量动态为客户端分配运行时间片,提高了服务器与客户端之间网络通信的效率,避免客户端进行不必要的等待,让资源得到最合理的利用。同时,服务器定时向客户端发送心跳包,防止客户端与服务器因长时间没有数据传输而掉线,保证了通信的实时性。

如图2所示,在另一个实施例中,上述网络通信方法,还包括以下步骤:

步骤S210,设置最小运行时间片。

具体的,最小运行时间片可以设置为很小的数值,比如0.01ms,用以处理心跳包,确保连接到服务器的客户端均有运行的机会,因为心跳包的数据量很小,所以最小运行时间片很小也足够处理心跳包。每个客户端每次分配的任务运行时间片不能小于最小时运行间片。

步骤S220,设置最大运行时间片。

具体的,每个客户端每次分配的任务运行时间片不能大于最大运行时间片,最大运行时间片是一个动态变化值,它跟连接到服务器的客户端数量有关。连接的客户端数量少,最大运行时间片就大,连接的客户端数量多,最大运行时 间片就小,但是最小不会小于最小运行时间片,以此来确保每个客户端运行完成到下一次取得运行权的时间间隔在一个合理的区间内,保证每个客户端在该时间间隔内都能得到响应,确保通信的实时性。

每个客户端运行完成到下一次取得运行权的时间间隔可以视具体情况而定,如将其设为100ms,即要求每个客户端要在100ms内能得到响应。最大运行时间片与管理容器的总轮询数量程线性相关,当总轮询数量为1时,那么最大运行时间片为100ms,当总轮询数量为2时,那么最大运行时间片为50ms,当总轮询数量为3时,那么最大运行时间片为33ms,以此类推。总轮询数量与建立连接的客户端数量和机会运行时间片的数量N有关。当机会运行时间片的数量N为0时,总轮询数量为客户端的数量,当机会运行时间片的数量N不为0时,总轮询数量为客户端的数量与机会运行时间片的数量N之和。

步骤S230,设置N个机会运行时间片。

具体的,设置机会运行时间片,可将其分配给拥有最大运行时间片且连接服务器最早的N个客户端,让数据量大且最早连接的客户端获取更多的机会进行数据传输。机会运行时间片的数量N根据连接的客户端数量来定,具体方法如下:当客户端连接数量≤2时,N可为0;当2﹤客户端连接数量≤10时,N可为1;当10﹤客户端连接数量≤100时,N可为2;当客户端连接数量﹥100时,N可为3,也可为4、5、6等。

图3管理容器动态分配时间片的流程示意图,在一个实施例中,如图3所示,管理容器根据每个客户端的通信数据量动态给各个客户端分配网络通信运行时间片的步骤具体包括:

步骤S302,通过管理容器给每个任务分配固定运行时间片。

具体的,初始化时,管理容器给任务队列中的每个队列分配固定运行时间片,比如分配的固定运行时间片为20ms。

步骤S304,轮询运行任务队列中的任务。

具体的,任务轮询运行的先后按客户端连接服务器的先后顺序进行排列。

步骤S306,判断任务是否在当前任务运行时间片内将数据处理完,若否,则执行步骤S308,若是,则执行步骤S312。

步骤S308,管理容器剥夺任务的运行权,将运行权交给下一个任务,然后执行步骤S310。

步骤S312,管理容器剥夺任务的运行权,将运行权交给下一个任务,然后执行步骤S314。

步骤S310,管理容器将该任务的当前任务运行时间片加上第二设置时间作为下次的任务运行时间片分配给该任务,然后执行步骤S320。

具体的,当一个任务的任务运行时间片用完但数据还未处理完时,管理容器会强制剥夺它的运行权,然后将运行权交给任务队列中的下一个任务。未处理完的数据将在下次该任务获得运行权时继续处理。分配下次的任务运行时间片时,管理容器会以该任务当前任务运行时间片加上第二设置时间作为新的任务运行时间片分配给它,但是下次的任务运行时间片不能高于最大运行时间片,若高于最大运行时间片则以最大运行时间片作为下次的任务运行时间片分配。其中,第二设置时间为一个存放在配置文件中的值,可以根据应用场合来定,如5ms,3ms。

步骤S314,判断任务数据处理完时当前任务运行时间片是否刚好用完,若是,则执行步骤S316,若否,则执行步骤S318。

步骤S316,分配下次的任务运行时间片时数值不变,然后执行步骤S320。

具体的,当一个任务数据处理完成时运行时间片也刚好用完,管理容器剥夺它的运行权,然后将运行权交给下一个任务,该任务下一次的任务运行时间片保持不变。

步骤S318,管理容器将任务的本次耗时作为下次的任务运行时间片分配。

具体的,当一个任务数据处理完成但其任务运行时间片还未用完时,管理容器也将剥夺它的运行权,然后将运行权交给下一交任务,分配下次的任务运行时间片时,即以本次耗时作为下次的任务运行时间片分配给该任务,下次的任务运行时间片不能小于最小运行时间片。若任务当前无数据量传输,则它下次的任务运行时间片为最小运行时间片。

步骤S320,管理容器将机会运行时间片分配给拥有最大运行时间片且连接最早的N个客户端,然后执行步骤S306。

具体的,根据步骤S230取得机会运行时间片的数量N,管理容器将机会运行时间片分配给拥有最大运行时间片且连接最早的N个客户端,让数据量大的客户端拥有更多的运行时间片进行传输数据的机会。

在一个实施例中,客户端与服务器失联后,会自动进行连接。

客户端启动后自动向服务器请求Socket(套接字)连接,如果请求Socket连接失败,则每隔一段时间(例如100ms)不断向服务器请求Socket连接直到连接成功为止。连接成功后,启动一个工作线程和一个监控线程,工作线程负责与服务器进行数据交互,监控线程用于监控接收心跳包状态,如果超过指定时间没有收到心跳包,则认为掉线,重新向服务器请求Socket连接直到连接成功为止。其中,指定时间即为第一设置时间。这样客户端即便掉线也能马上连接服务器,确保通信的实时性。

在一个实施例中,服务器与客户端的数据传输是采用特定的数据包的形式进行传递,有利于过滤掉无效数据,让系统专注于有效数据的传输服务器与客户端的所有通信数据按包为单位进行传送,包分为三个部分:头部、头部数据和数据。如下图所示:

其中,Tag是一个特殊的数字,用来说明这是一个有效的包;Cmd用来约定包的类型,包一共有两种类型:请求包和响应包;Header_size表示头部数据的大小;Data_size表示数据域的大小;Header为头部数据,头部数据在传输文件的时候有效,主要用来存放文件名称;Data为数据部分。

如图4所示,一种网络通信系统,包括任务建立模块410,分配模块420和心跳包模块430。

任务建立模块410,用于通过预先创建的管理容器分别给每个与服务器连接 的客户端建立任务,并将建立的任务加入到管理容器的任务队列中。

具体的,服务器创建管理容器专门用于管理客户端,管理容器为每个客户端建立任务,任务包含客户端的运行状态、运行时间片等属性。

分配模块420,用于通过管理容器根据每个客户端的通信数据量动态给各个客户端分配任务运行时间片。

心跳包模块430,用于每隔第一设置时间每个客户端发送一次心跳包。

具体的,心跳包所携带的数据很小,并不会占用太多的资源,第一设置时间不过能长,也不能过短,发送心跳包时间间隔过长会导致客户端因长时间与服务器没有数据传输而掉线,时间间隔过短会增加网络传输的负担。如第一设置时间取3000ms(毫秒),则服务器每隔3000ms向已建立连接的每个客户端发送一次心跳包。

上述网络通信系统,服务器通过预先建立的管理容器为与服务器连接的客户端建立任务并将任务加入到管理容器的任务队列中后,轮询进行任务运行,使管理容器根据客户端的数据量动态为客户端分配运行时间片,提高了服务器与客户端之间网络通信的效率,避免客户端进行不必要的等待,让资源得到最合理的利用。同时,服务器定时向客户端发送心跳包,防止客户端与服务器因长时间没有数据传输而掉线,保证了通信的实时性。

如图5所示,在其中一个实施例中,上述网络通信系统,除了包括任务建立模块410,分配模块420,心跳包模块430,还包括最小时间片设置模块440,最大时间片设置模块450,机会时间片设置模块460和机会时间片分配模块470。

最小时间片设置模块440,用于设置客户端的最小运行时间片。

具体的,最小运行时间片可以设置为很小的数值,比如0.01ms,用以处理心跳包,确保连接到服务器的客户端均有运行的机会,因为心跳包的数据量很小,所以最小运行时间片很小也足够处理心跳包。每个客户端每次分配的任务运行时间片不能小于最小时运行间片。

最大时间片设置模块450,用于设置客户端的最大运行时间片。最大时间片设置模块450还包括总轮询数量确定子模块452和动态设置子模块454。

总轮询数量确定子模块452,用于确定总轮询数量,确定总轮询数量的方式 为当机会运行时间片的数量N为0时,总轮询数量为客户端的数量,当机会运行时间片的数量N不为0时,总轮询数量为客户端的数量与机会运行时间片的数量N之和。

动态设置子模块454,用于根据总轮询数量动态设置最大运行时间片。

具体的,每个客户端每次分配的运行时间片不能大于最大运行时间片,最大运行时间片是一个动态变化值,它跟连接到服务器的客户端数量有关。连接的客户端数量少,最大运行时间片就大,连接的客户端数量多,最大运行时间片就小,但是最小不会小于最小运行时间片,以此来确保每个客户端运行完成到下一次取得运行权的时间间隔在一个合理的区间内,保证每个客户端在该时间间隔内都能得到响应,确保通信的实时性。

每个客户端运行完成到下一次取得运行权的时间间隔可以视具体情况而定,如将其设为100ms,即要求每个客户端要在100ms内能得到响应。最大运行时间片与管理容器的总轮询数量程线性相关,当总轮询数量为1时,那么最大运行时间片为100ms,当总轮询数量为2时,那么最大运行时间片为50ms,当总轮询数量为3时,那么最大运行时间片为33ms,以此类推。

机会时间片设置模块460,用于设置N个机会运行时间片。

具体的,机会时间片设置模块460设置数量N的形式为当与服务器建立连接的客户端数量小于或等于2时,N可为0,当与服务器建立连接的客户端数量大于2且小于或等于10时,N可为1,当与服务器建立连接的客户端数量大于10且小于或等于100时,N可为2,当所述客户端的数量大于100时,N可为3,也可为4、5、6等。

机会时间片分配模块470,用于将机会运行时间片分配给拥有最大运行时间片且连接最早的客户端,分配数量为机会运行时间片的数量N。

如图6所示,在其中一个实施例中,分配模块420还包括固定时间片分配子模块422,轮询子模块424,运行时间片调整子模块426。

固定时间片分配子模块422,用于通过管理容器给每个任务分配固定运行时间片。

具体的,初始化时,管理容器给任务队列中的每个队列分配固定运行时间 片,比如分配的固定运行时间片为20ms。

轮询子模块424,用于轮询运行任务队列中的任务。

运行时间片调整子模块426,用于通过管理容器给各个任务调整下次的任务运行时间片。运行时间片调整子模块426的调整形式为判断各个任务是否在当前任务运行时间片内将数据处理完,若否,则管理容器剥夺该任务的运行权,然后将运行权交给下一个任务,并将该任务的当前任务运行时间片加上第二设置时间作为下次的任务运行时间片分配给该任务,若是,则管理容器剥夺该任务的运行权,然后将运行权交给下一个任务,并将该任务的本次耗时作为下次的运行时间片分配。

具体的,当一个任务的任务运行时间片用完但数据还未处理完时,管理容器会强制剥夺它的运行权,然后将运行权交给任务队列中的下一个任务。未处理完的数据将在下次该任务获得运行权时继续处理。分配下次的任务运行时间片时,管理容器会以该任务的当前任务运行时间片加上第二设置时间作为下次的任务运行时间片分配给它,但是下次的任务运行时间片不能高于最大运行时间片,若高于最大运行时间片则以最大运行时间片作为下次的任务运行时间片分配。其中,第二设置时间为一个存放在配置文件中的值,可以根据应用场合来定,如5ms,3ms。

当一个任务数据处理完成时任务运行时间片也刚好用完时,管理容器剥夺它的运行权,然后将运行权交给下一个任务,该任务下次的任务运行时间片保持不变。

当一个任务数据处理完成但其任务运行时间片还未用完时,管理容器也将剥夺它的运行权,然后将运行权交给下一交任务,分配下次的任务运行时间片时,即以本次耗时作为下次的任务运行时间片分配给该任务,下次的任务运行时间片不能小于最小运行时间片。若任务当前无数据量传输,则它下次的任务运行时间片为最小运行时间片。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技 术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1