一种信息交互方法及系统与流程

文档序号:17126073发布日期:2019-03-16 00:27阅读:192来源:国知局
一种信息交互方法及系统与流程

本发明涉及一种数据传输技术领域,特别涉及一种信息交互方法及系统。



背景技术:

在现有技术中,分布式测试系统的前端计算机由后端计算机控制,实施数据采集和处理,并实时发送采集数据到后端;后端计算机通过网络接收数据并发送控制命令至前端计算机,控制前端采集过程的启动、停止和信息反馈等操作。前后端计算机交互信息多样,需要合理设计信息交互方法,避免产生信息传输不及时等不可靠因素。目前基于windows操作系统的测试系统网络连接主要采用winsock1.1或winsock2的api(应用程序接口)支持的udp(用户数据报协议),tcp(传输控制协议)方式,也有的采用mfc(微软基础c类库)封装的csocket类的消息机制实现前后端信息通信。现行方法服务器端一般仅对单一客户端进行简单数据收、发,不涉及多客户端连接的管理和接收客户端的控制命令环节;客户端也仅向服务器端收、发简单数据,不涉及从服务器端定时接收大量数据和对服务器端工作的协调控制。所以,现行方法存在信息收发关系不够明确、兼容性不好、实时性不高等缺陷,难以适应数据采集量大、前后端交互关系复杂、可靠性和实时性要求高的测试环境。



技术实现要素:

(一)发明目的

本发明的目的是提供一种信息交互方法及系统,通过在服务器和客户端之间分别通过数据通道和命令通道连接,并通过数据通道实现对数据信息的收取与发送以及通过命令通道实现对命令信息的收取与发送,合理设计信息发送和接收线程的方式以进行信息交互,既保证了应用于开发过程信息交互的可靠性和实用性,又确保数据传输过程的实时性和可控性,且该方法可扩展用于其它非windows操作系统的网路交互,能够满足数据量大、实时性高、线程交互复杂的分布式测试系统的数据传输需求。

(二)技术方案

为解决上述问题,本发明的第一方面提供了一种信息交互方法,服务器与客户端通过数据通道连接,将获取的数据信息发送至所述客户端;所述客户端与所述服务器通过命令通道连接,发送命令信息至所述服务器。

进一步的,所述服务器与客户端通过数据通道连接,将获取的数据信息发送至所述客户端的步骤包括:建立数据通道连接管理线程,连接所述服务器与所述客户端;建立数据通道数据发送线程,以将所述数据信息发送至所述客户端。

进一步的,所述客户端与服务器通过命令通道连接,发送命令信息至所述服务器的步骤包括:建立命令通道连接管理线程,连接所述服务器与所述客户端;建立命令通道命令发送线程,以将所述命令信息发送至所述服务器。

进一步的,所述建立数据通道连接管理线程,连接所述服务器与所述客户端包括:所述服务器初始化客户端列表;所述服务器创建第一套接字,绑定并监听所述第一套接字;所述客户端创建第二套接字并发送连接请求;所述服务器接收所述连接请求,所述服务器接收所述客户端的连接请求,基于所述第一套接字和所述第二套接字生成第三套接字;服务器基于所述第三套接字获取与该第三套接字对应客户端的ip地址,并基于所述客户端列表,判断所述第三套接字是否存在于所述客户端列表中,若是,则将所述ip地址对应的第三套接字更新至所述客户端列表,以记录所述客户端信息,若否,则增加所述第三套接字至所述客户端列表,以记录所述客户端信息;判断是否结束连接,若否,则返回并重新接收所述连接请求,若是,则结束连接。

进一步的,所述建立数据通道数据发送线程,以将所述数据信息发送至所述客户端包括:所述服务器获取并基于所述客户端列表中已连接所述客户端的数量建立至少一个数据线程;在每个所述数据线程中,所述服务器基于api的send函数发送所述数据信息至所述客户端;基于所述send函数携带的反馈数据判断所述客户端与所述服务器是否断开连接,若是,则删除所述客户端列表中该客户端对应的第三套接字;若否,则判断所述数据信息是否发送完成,若否,则返回并发送所述数据信息,若是,则结束线程。

进一步的,所述建立数据通道数据发送线程,以将所述数据信息发送至所述客户端还包括:所述客户端基于api的recv函数接收所述数据信息;基于所述recv函数携带的返回值判断所述客户端与所述服务器是否断开连接,若是,则结束线程,若否,则判断对所述数据信息是否停止接收,若否,则返回并重新接收数据信息。

进一步的,所述建立命令通道连接管理线程,连接所述服务器与所述客户端包括:所述服务器初始化客户端列表;所述服务器创建第一套接字,绑定并监听所述第一套接字;所述客户端创建第二套接字并发送连接请求;所述服务器接收所述客户端的连接请求,基于所述第一套接字和所述第二套接字生成第三套接字;服务器基于所述第三套接字获取与该第三套接字对应客户端的ip地址,并基于所述客户端列表,判断所述第三套接字是否存在于所述客户端列表中,若是,则将所述ip地址对应的第三套接字更新至所述客户端列表,以记录所述客户端信息,若否,则增加所述第三套接字至所述客户端列表,以记录所述客户端信息;判断是否结束连接,若否,则返回并重新接收所述连接请求,若是,则结束连接。

进一步的,所述建立命令通道命令发送线程,以将所述命令信息发送至所述服务器包括:所述服务器获取并基于所述客户端列表中已连接所述客户端的数量建立与已连接所述客户端的数量相匹配的命令线程;在每个命令线程中,所述客户端基于api的send函数发送所述命令信息至所述服务器;基于所述send函数携带的反馈数据判断所述客户端与所述服务器是否断开连接,若是,则结束,若否,则判断命令信息是否发送完成,若否,则重新发送所述命令信息;若是,基于api的recv函数接收所述服务器反馈的所述命令信息的反馈信息;基于所述recv函数携带的返回值判断所述客户端与所述服务器是否断开连接,若否,则对所述命令信息的反馈信息进行处理并存储,若是,则结束。

进一步的,所述建立命令通道命令发送线程,以将所述命令信息发送至所述服务器还包括:所述服务器基于api的recv函数接收所述客户端发送的命令信息;基于所述recv函数携带的返回值判断所述客户端与所述服务器是否断开连接,若是,则删除所述客户端列表中该客户端对应的第三套接字;若否,基于api的send函数发送所述命令信息的反馈信息至所述客户端;基于所述send函数携带的反馈数据判断所述客户端与所述服务器是否断开连接,若是,则删除所述客户端列表中该客户端对应的第三套接字;若否,则判断所述命令信息是否发送完成,若否,则返回所述命令反馈单元再次发送所述命令信息的反馈信息;若是,则判断所述服务器是否停止接收所述命令信息,若否,则返回并重新接收所述命令信息,若是,则结束。

根据本发明的另一个方面,提供了一种信息交互系统,包括:服务器、至少一个客户端、多个数据通道以及多个命令通道;所述服务器与每个所述客户端分别通过所述数据通道连接,用于将获取的数据信息发送至所述客户端;所述客户端与所述服务器通过所述命令通道连接,用于发送所述命令信息至所述服务器。

进一步的,所述服务器还用于建立数据通道连接管理线程,连接所述服务器与所述客户端;建立数据通道数据发送线程,以将所述数据信息发送至所述客户端;和/或,建立命令通道连接管理线程,连接所述服务器与所述客户端;建立命令通道命令发送线程,以将所述命令信息发送至所述服务器。

进一步的,所述服务器包括第一处理模块和第一存储模块;所述客户端包括第二处理模块,用于创建第二套接字并发送连接请求;所述第一处理模块,用于初始化客户端列表;还用于创建第一套接字,绑定并监听所述第一套接字;还用于接收所述客户端的连接请求,基于所述第一套接字和所述第二套接字生成第三套接字;还用于基于所述第三套接字获取与该第三套接字对应客户端的ip地址,并基于所述客户端列表,判断所述第三套接字是否存在于所述客户端列表中,若是,则将所述ip地址对应的第三套接字更新至所述客户端列表,以记录所述客户端信息,若否,则增加所述第三套接字至所述客户端列表,以记录所述客户端信息;以及判断是否结束连接,若否,则返回并重新接收所述连接请求,若是,则结束;所述第一存储模块,用于存储所述客户端列表以及第一套接字。

进一步的,所述第一处理模块包括:第一信息获取单元,用于获取所述客户端列表;数据计算单元,用于基于所述客户端列表已连接所述客户端的数量建立至少一个数据线程;在每个所述数据线程中,所述服务器基于api的send函数发送所述数据信息至所述客户端;第一判断单元,用于基于所述send函数携带的反馈数据判断所述客户端与所述服务器是否断开连接,若是,则删除所述客户端列表中该客户端对应的第三套接字;若否,则判断所述数据信息是否发送完成,若否,则返回并发送所述数据信息,若是,则结束。

进一步的,所述第二处理模块包括:第一信息接收单元,用于基于api的recv函数接收所述数据信息;第二判断单元,用于基于所述recv函数携带的返回值判断所述客户端与所述服务器是否断开连接,若是,则结束,若否,则于判断对所述数据信息是否停止接收,若否,则返回并重新接收数据信息。

进一步的,所述第一处理模块还包括:第二信息获取单元,用于获取所述客户端列表;第一命令计算单元,用于基于所述客户端列表中已连接所述客户端的数量建立与已连接所述客户端的数量相匹配的命令线程;所述第二处理模块还包括:第二信息接收单元,用于基于api的recv函数接收所述服务器反馈的所述命令信息的反馈信息;第二命令计算单元,用于在每个命令线程中,所述客户端基于api的send函数发送所述命令信息至所述服务器;第三判断单元,用于基于所述send函数携带的反馈数据判断所述客户端与所述服务器是否断开连接,若是,则结束,若否,则判断命令信息是否发送完成,若否,则重新发送所述命令信息;还用于基于所述recv函数携带的返回值判断所述客户端与所述服务器是否断开连接,若否,则对所述命令信息的反馈信息进行处理并存储,若是,则结束。

进一步的,所述第一处理模块还包括:第三信息接收单元,用于基于api的recv函数接收所述客户端发送的命令信息;所述第一命令计算单元,还用于基于api的send函数发送所述命令信息的反馈信息至所述客户端;第四判断单元,用于基于所述recv函数携带的返回值判断所述客户端与所述服务器是否断开连接,若是,则删除所述客户端列表中该客户端对应的第三套接字;还用于基于所述send函数携带的反馈数据判断所述客户端与所述服务器是否断开连接,若是,则删除所述客户端列表中该客户端对应的第三套接字;若否,则判断所述命令信息是否发送完成,若否,则返回所述命令反馈单元再次发送所述命令信息的反馈信息;以及第五判断单元,用于判断所述服务器是否停止接收所述命令信息,若否,则返回并重新接收所述命令信息,若是,则结束。

技术方案小结

本申请的服务器可以与一个客户端连接,也可以与一个以上的客户端(即多个客户端)连接,运用winsock1.1api支持的套接字类型socket的tcp方式开展交互。两通道采用不同的端口号。服务器通过运用多个数据通道datasock开展与客户端分别建立连接,以将服务器内的数据发送至客户端,实现数据的传输;通过建立多个命令通道cmdsock,每个客户端分别通过命令通道与服务器连接,将命令发送给服务器,服务器接收命令后执行该命令并向客户端反馈。通过数据通道和命令通道以完成服务器与一个或一个以上客户端之间的信息交互。

(三)有益效果

本申请设计并实现了一种服务器和客户端之间(前后端)数据传输和命令信息交互机制,运用基于可靠连接的tcp方式,采用独立的数据通道和独立的命令通道,将数据信息和命令分别通过独立的数据通道和独立的命令通道分开收发的信息交互方式,通过这种交互方式具有实时性、可靠性以及实用性的特点,同时这种交互方式能够满足数据量大、实时性高、线程交互复杂的分布式测试系统的数据传输需求。避免现有技术中方法存在的信息收发关系不够明确、兼容性不好、实时性不高等缺陷,以及难以适应数据采集量大、前后端交互关系复杂、可靠性和实时性要求高的测试环境的缺陷。

附图说明

图1是根据本申请实施方式信息交互方法流程图;

图2是根据本申请实施方式数据信息交互方法流程图;

图3是根据本申请实施方式命令信息交互方法流程图;

图4是根据本申请实施方式建立数据通道连接管理线程的方法流程图;

图5是根据本申请实施方式服务器发送数据信息的方法流程图;

图6是根据本申请实施方式客户端接收数据信息的方法流程图;

图7是根据本申请实施方式建立命令通道连接管理线程的方法流程图;

图8是根据本申请实施方式客户端发送命令信息的方法流程图;

图9是根据本申请实施方式服务器接收命令信息的方法流程图;

图10是根据本申请实施方式服务器与客户端连接关系示意图;

图11示意性的示出了服务器的内部结构;

图12示意性的示出了客户端的内部结构。

附图标记:

100:服务器;101:第一处理模块;1011:第一信息获取单元;1012:数据计算单元;1013:第一判断单元;1014:第二信息获取单元;1015:第一命令计算单元;1016:第三信息接收单元;1017:第四判断单元;1018:第五判断单元;102:第一存储模块;200:客户端;201:第二处理模块;2011:第一信息接收单元;2012:第二判断单元;2013:第二信息接收单元;2014:第二命令计算单元;2015:第三判断单元;202:存储模块;203:显示模块;300:数据通道;400:命令通道。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。

显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明的描述中,需要说明的是,术语“第一”、“第二”、“第三”、“第四”、“第五”仅用于描述目的,而不能理解为指示或暗示相对重要性。

此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。

请参阅图1,图1是根据本申请实施方式信息交互方法流程图。

本发明的一个实施例提供了一种信息交互方法,如图1所示,包括s1:服务器与客户端通过数据通道连接,将获取的数据信息发送至客户端;s2:客户端与服务器通过命令通道连接,发送命令信息至服务器。

本发明的信息交互方法可以应用于分布式测试系统。例如,分布式测试系统的前端计算机作为服务器,后端计算机作为客户端。运用winsock1.1api支持的套接字类型socket的tcp方式开展交互。以下描述中,服务器可以与前端相互指代,客户端可以与后端相互指代。

请参阅图2,图2是根据本申请实施方式数据信息交互方法流程图。

在一可选实施例中,如图2所示,服务器与客户端通过数据通道连接,将获取的数据信息发送至客户端的步骤包括:

s11:建立数据通道连接管理线程,连接服务器与客户端。

s12:建立数据通道数据发送线程,以将数据信息发送至客户端。

请参阅图3,图3是根据本申请实施方式命令信息交互方法流程图

在一可选实施例中,如图3所示,客户端与服务器通过命令通道连接,发送命令信息至服务器的步骤包括:

s21:建立命令通道连接管理线程,连接服务器与客户端。

s22:建立命令通道命令发送线程,以将命令信息发送至服务器。

请参阅图4,图4是根据本申请实施方式建立数据通道连接管理线程的方法流程图。

在一可选实施例中,如图4所示,建立数据通道连接管理线程,连接服务器与客户端包括:

s111:服务器初始化客户端列表。初始化的客户端列表中可以为空的列表,也可以具有一定数量客户端的第二套接字。

s112:服务器创建第一套接字,绑定并监听第一套接字。

s113:客户端创建第二套接字并发送连接请求。

s114:服务器接收客户端的连接请求,基于第一套接字和所述第二套接字生成第三套接字。

s115:服务器基于所述第三套接字获取与该第三套接字对应客户端的ip地址,并基于客户端列表,判断第三套接字是否存在于客户端列表中,若是,则执行步骤s116:将ip地址对应的第三套接字更新至客户端列表,以记录客户端信息;若否,则执行步骤s117:增加第三套接字至客户端列表,以记录客户端信息。其中,服务器通过调用函数getpeername,能够从第三套接字中获得客户端的ip。现有技术中服务器一般不对连接的多个客户端进行管理,在每秒钟向多个客户端发送一次数据的应用中,容易造成数据发送不完全或发送失败。本申请上述方法可确保连接的客户端信息有记录,且能够保证来自同一客户端的连接是最新的连接,确保数据准确发送至目的地客户端。

s118:判断是否结束连接,若否,则返回并重新接收连接请求执行步骤s114,若是,则执行步骤s119:结束连接。通过上述步骤建立循环连接,可以实时获取客户端连接和断开的情况,以保证后续步骤中数据传输的实时性和可靠性。

服务器的数据传输运用数据通道datasock开展,采用独立的端口号。服务器支持同时连接多个客户端,连接服务器生成的第三套接字在客户端列表中进行管理(添加、修改、删除)。同时连接客户端数量优选为1、2、3、4或5个,也可以更多,但不限于此,最优选为5个,连接过多会造成数据传输的延迟。服务器通过数据通道只发送数据,客户端通过数据通道只接收数据。其中数据包括帧头、其他各通道1秒内采集的数据、校验帧或帧尾,但不限于此。

请参阅图5,图5是根据本申请实施方式服务器发送数据信息的方法流程图。

在一可选实施例中,如图5所示,建立数据通道数据发送线程,以将数据信息发送至客户端包括:

s121:服务器获取并基于客户端列表中已连接客户端的数量建立至少一个数据线程。其中,数据线程的数量与客户端的数量相匹配,一个客户端通过一个数据线程执行数据发送,每个数据线程可以同时执行相同的动作或任务。从而使得数据发送的实时性和准确性。

s122:在每个数据线程中,服务器基于api的send函数发送数据信息至客户端。

s123:基于send函数携带的反馈数据判断客户端与服务器是否断开连接,若是,则执行步骤s124:删除客户端列表中该客户端对应的第三套接字。

s125:若否,则判断数据信息是否发送完成,若否,则返回并发送数据信息执行步骤s122,若是,则执行步骤s126:结束线程。

请参阅图6,图6是根据本申请实施方式客户端接收数据信息的方法流程图。

在一可选实施例中,如图6所示建立数据通道数据发送线程,以将数据信息发送至客户端还包括:

s121′:客户端基于api的recv函数接收数据信息。

s122′:基于recv函数携带的返回值判断客户端与服务器是否断开连接,若是,则执行步骤s124′:结束线程。

s123′:若否,则判断对数据信息是否停止接收,若否,则返回并重新接收数据信息执行步骤s121′,若是,则执行步骤s124′:结束线程。其中,在执行步骤s123′之前还可以同时对数据信息进行数据计算、存储并显示等处理。

如上实施例需要说明的是,基于send函数的反馈数据和recv函数的返回值进行判断的过程为:如果返回值或反馈数据与发送或接收数据数量不符,则认为数据尚未发送完成;如果返回值或反馈数据与发送或接收数据数量相等,则认为发送成功。该判断过程还存在一种情况为如果返回错误,则直接判断断开。

另外,上述实施例,其条件为“是否断开连接”可以判断发送过程主动或被动断开。最后的条件为“是否停止接收数据”,可用于判断发送或接收线程是否主动断开。两种判断确保连接断开时的其它相关操作处理正常进行,不会造成数据传输异常或程序处理异常。

请参阅图7,图7是根据本申请实施方式建立命令通道连接管理线程的方法流程图。

在一可选实施例中,如图7所示,建立命令通道连接管理线程,连接服务器与客户端包括:

s211:服务器初始化客户端列表。初始化的客户端列表中可以为空的列表,也可以具有一定数量客户端对应的第三套接字。

s212:服务器创建第一套接字,绑定并监听第一套接字。

s213:客户端创建第二套接字并发送连接请求。

s214:服务器接收客户端连接请求,基于所述第一套接字和所述第二套接字生成第三套接字。

s215:服务器基于所述第三套接字获取与该第三套接字对应客户端的ip地址,并基于所述客户端列表,判断所述第三套接字是否存在于所述客户端列表中,若是,则执行步骤s216:将所述ip地址对应的第三套接字更新至所述客户端列表,以记录所述客户端信息,若否,则执行步骤s216:增加所述第三套接字至所述客户端列表,以记录所述客户端信息。其中,服务器通过调用函数getpeername,能够从第三套接字中获得客户端的ip。现有技术中服务器一般不对连接的多个客户端进行管理,在每秒钟向多个客户端发送一次数据的应用中,容易造成数据发送不完全或发送失败。本申请上述方法可确保连接的客户端信息有记录,且能够保证来自同一客户端的连接是最新的连接,确保数据准确发送至目的地客户端。

s218:判断是否结束连接,若否,则返回并重新接收连接请求执行步骤s214,若是,则执行步骤s219:结束连接。通过上述步骤建立循环连接,可以实时获取客户端连接和断开的情况,以保证后续命令信息传输的实时性和可靠性。

客户端向服务器发送的命令信息依托命令通道cmdsock进行信息交互,采用独立的端口号。服务器支持同时连接多个客户端,连接服务器生成的第三套接字在客户端列表中进行管理(添加、修改、删除)。同时连接客户端数量优选为1、2、3、4或5个,也可以更多,但不限于此,最优选为5个,连接过多会造成命令信息传输的延迟。服务器通过命令通道接收命令信息并发送对该命令执行的反馈,客户端通过命令通道发送命令信息再接收服务器发送的反馈。其中,命令信息是按照设计好的规则或格式发送的数据(该类规则和格式可作为其它专利),如0x01代表开始采集,0x02代表结束采集等。反馈信息包含命令接收是否成功信息(如0xa代表成功,0xb代表失败等),需要服务器提供的自身磁盘状态信息、所需通道某时刻数据值(点采)等信息。

请参阅图8,图8是根据本申请实施方式客户端发送命令信息的方法流程图。

在一可选实施例中,如图8所示,建立命令通道命令发送线程,以将命令信息发送至服务器包括:

s221:服务器获取并基于客户端列表中已连接客户端的数量建立与已连接客户端的数量相匹配的命令线程。

s222:在每个命令线程中,客户端基于api的send函数发送命令信息至服务器。

s223:基于send函数携带的反馈数据判断客户端与服务器是否断开连接,若是,则执行步骤s228:结束线程,若否,则执行步骤s224:判断命令信息是否发送完成,若否,则重新发送命令信息执行步骤s222;若是,则执行步骤s225:基于api的recv函数接收服务器反馈的命令信息的反馈信息。

s226:基于recv函数携带的返回值判断客户端与服务器是否断开连接,若否,则执行步骤s227:对命令信息的反馈信息进行处理并存储,若是,则执行步骤s228:结束线程。

请参阅图9,图9是根据本申请实施方式服务器接收命令信息的方法流程图

在一可选实施例中,如图9所示,建立命令通道命令发送线程,以将命令信息发送至服务器还包括:

s221′:服务器基于api的recv函数接收客户端发送的命令信息。

s222′:基于recv函数携带的返回值判断客户端与服务器是否断开连接,若是,则执行步骤s228′删除客户端列表中该客户端对应的第三套接字;若否,s223′基于api的send函数发送命令信息的反馈信息至客户端。

s224′基于send函数携带的反馈数据判断客户端与服务器是否断开连接,若是,则执行步骤s228′删除客户端列表中该客户端对应的第三套接字;若否,则执行步骤s225′判断命令信息是否发送完成,若否,则返回命令反馈单元再次发送命令信息的反馈信息执行步骤s223′;若是,则执行步骤s226′判断服务器是否停止接收命令信息,若否,则返回并重新接收命令信息执行步骤s221′,若是,则执行步骤s227′结束线程。

该发明可用于各类网络化分布式电信号测试系统,例如电力系统信号、医疗设备、工业控制设备等的测试。具体可以以某型设备的电源信号测试采集为例,设有5路测试信号,每路信号值为10伏左右,每路信号每秒钟采集1次,客户端为1台计算机。各路信号第一秒钟测试值依次为10.1,10.2,10.3,9.8,9.9,作为采集数据执行上述实施例的各个步骤这里不再具体带入步骤详细描述。

需要说明的是,本发明信息交互系统是与涉及计算机程序流程的信息交互方法一一对应的装置,由于在前已经对信息交互方法的步骤流程进行了详细描述,在此不再对信息交互系统的实施过程进行赘述。

请参阅图10,图10是根据本申请实施方式服务器与客户端连接关系示意图。

根据本发明的另一实施方式提供了一种信息交互系统,如图10所示,包括:服务器100、至少一个客户端200、多个数据通道300以及多个命令通道400;服务器100与每个客户端分别通过数据通道连接,用于将获取的数据信息发送至客户端200;客户端200与服务器100通过命令通道连接,用于发送命令信息至服务器100。

在一可选实施例中,服务器100还用于建立数据通道连接管理线程,连接服务器100与客户端200;建立数据通道数据发送线程,以将数据信息发送至客户端200;和/或,建立命令通道连接管理线程,连接服务器与客户端200;建立命令通道命令发送线程,以将命令信息发送至服务器100。

请参与图11和图12,图11示意性的示出了服务器的内部结构;图12示意性的示出了客户端的内部结构

在一可选实施例中,如图11和图12所示,服务器100包括第一处理模块101和第一存储模块102;客户端200包括第二处理模块201,用于创建第二套接字并发送连接请求;第一处理模块101,用于初始化客户端列表;还用于创建第一套接字,绑定并监听第一套接字;还用于接收客户端的连接请求,基于所述第一套接字和所述第二套接字生成第三套接字;还用于基于所述第三套接字获取与该第三套接字对应客户端的ip地址,并基于所述客户端列表,判断所述第三套接字是否存在于所述客户端列表中,若是,则将所述ip地址对应的第三套接字更新至所述客户端列表,以记录所述客户端信息,若否,则增加所述第三套接字至所述客户端列表,以记录所述客户端信息;以及判断是否结束连接,若否,则返回并重新接收连接请求,若是,则结束;第一存储模块102,用于存储客户端列表以及第一套接字。

在一可选实施例中,第一处理模块101包括:第一信息获取单元1011,用于获取客户端列表;数据计算单元1012,用于基于客户端列表已连接客户端的数量建立至少一个数据线程;在每个数据线程中,服务器基于api的send函数发送数据信息至客户端;第一判断单元1013,用于基于send函数携带的反馈数据判断客户端与服务器是否断开连接,若是,则删除客户端列表中该客户端对应的第三套接字;若否,则判断数据信息是否发送完成,若否,则返回并发送数据信息,若是,则结束。

在一可选实施例中,第二处理模块201包括:第一信息接收单元2011,用于基于api的recv函数接收数据信息;第二判断单元2012,用于基于recv函数携带的返回值判断客户端与服务器是否断开连接,若是,则结束,若否,则判断对数据信息是否停止接收,若否,则返回并重新接收数据信息,若是,则结束。在本实施例中,还包括存储模块202和显示模块203分别用于对接收到的数据信息进行存储和显示。

在一可选实施例中,第一处理模块101还包括:第二信息获取单元1014,用于获取客户端列表;第一命令计算单元1015,用于基于客户端列表中已连接客户端的数量建立与已连接客户端的数量相匹配的命令线程;第二处理模块201还包括:第二信息接收单元2013,用于基于api的recv函数接收服务器反馈的命令信息的反馈信息;第二命令计算单元2014,用于在每个命令线程中,客户端基于api的send函数发送命令信息至服务器;第三判断单元2015,用于基于send函数携带的反馈数据判断客户端与服务器是否断开连接,若是,则结束,若否,则判断命令信息是否发送完成,若否,则重新发送命令信息;还用于基于recv函数携带的返回值判断客户端与服务器是否断开连接,若否,则对命令信息的反馈信息进行处理并存储,若是,则结束。

在一可选实施例中,第一处理模块还包括:第三信息接收单元1016,用于基于api的recv函数接收客户端发送的命令信息;第一命令计算单元1015,还用于基于api的send函数发送命令信息的反馈信息至客户端;第四判断单元1017,用于基于recv函数携带的返回值判断客户端与服务器是否断开连接,若是,则删除客户端列表中该客户端对应的第三套接字;还用于基于send函数携带的反馈数据判断客户端与服务器是否断开连接,若是,则删除客户端列表中该客户端对应的第三套接字;若否,则判断命令信息是否发送完成,若否,则返回命令反馈单元再次发送命令信息的反馈信息;以及第五判断单元1018,用于判断服务器是否停止接收命令信息,若否,则返回并重新接收命令信息,若是,则结束。

本发明旨在保护一种信息交互方法及系统,通过设计并实现了一种服务器和客户端之间(前后端)数据传输和命令信息交互机制,运用基于可靠连接的tcp方式,采用独立的数据通道和独立的命令通道,将数据信息和命令分别通过独立的数据通道和独立的命令通道分开收发的信息交互方式,通过这种交互方式具有实时性、可靠性以及实用性的特点,同时这种交互方式能够满足数据量大、实时性高、线程交互复杂的分布式测试系统的数据传输需求。避免现有技术中方法存在的信息收发关系不够明确、兼容性不好、实时性不高等缺陷,以及难以适应数据采集量大、前后端交互关系复杂、可靠性和实时性要求高的测试环境的缺陷。

应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。

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