本申请涉及计算机领域,尤其涉及一种基于安全套接层协议认证的文件传输方法及设备。
背景技术:
随着互联网的快速发展,文件共享已司空见惯,常见文件共享有网络文件系统(NFS,Network File System)、信息服务块(samba,Session Message Block)以及文件传输协议(FTP,File Transfer Protocol),这些技术能完成绝大部分功能。但在特定场景下,存在如下缺陷:
(一)NFS主要用于特定系统的文件共享:
NFS是Sun公司开发出来的一种主要用于Unix或类Unix系统的分布式文件系统,其存在如下缺陷:
1、NFS对支持Windows平台支持的不是很好,特别是Windows Server 2008以下系统,需要安装第三方工具来进行支持;
2、NFS传输文件是以明文的形式传送,不利于数据安全;
3、NFS不灵活,在特定场景不适应,如需要保留共享文件中被删除之前文件的场景。
(二)Samba主是用于平台间的文件共享:
Samba相比较NFS,确实实现了跨平台,对平台兼容比较好,但上述NFS的后两者缺陷,Samba也存在。
(三)FTP主要用于Internet的文件共享:
FTP有自己的通讯协议,可以在Internet上进行文件互传,但FTP存在明文传输文件的缺陷,并且在系统开发过程中,由于FTP文件传输属于工具,因此,要使用它,必须重新开个进程执行命令,与代码结合复杂,显得比较笨拙,在特定平台也要安装第三方工具和各种配置,使用起来并不是很方便。
综上,现有文件共享存在文件传输效率低,缺乏安全性,不能实现客户端全平台支持,代码维护压力大,系统耦合度高等缺点。
申请内容
针对上述现有技术的缺陷,本申请的一个目的是提供一种基于安全套接层协议认证的全平台文件传输方法及设备,解决现有文件共享存在的文件传输效率低,缺乏安全性,不能实现客户端全平台支持,代码维护压力大,系统耦合度高等问题。
根据本申请的一个方面,提供了一种基于安全套接层协议认证的文件传输方法,该方法包括:
服务器端携带安全套接层协议SSL证书,通过套接字socket与客户端建立长连接,并将该长连接放入到一个连接队列中;
所述服务器端向客户端发送文件传输请求,接收客户端将所要传输文件的参数信息附加到心跳包中的响应;
若所述心跳包中有所要传输的文件,服务器端即对该文件进行传输操作。
进一步地,上述方法中,所述服务器端携带SSL证书,通过与客户端进行身份认证、初始化协商加密算法、交换加密密钥完成认证。
进一步地,上述方法中,通过下列方式确定服务器端与客户端建立长连接:
在所述服务器端与客户端之间创建心跳机制。
进一步地,上述方法中,所述传输文件的参数信息,包括:传输的文件名称、文件生成时间、文件大小及该文件对应的信息摘要算法MD5值。
进一步地,上述方法中,所述文件传输包括文件拉取和文件推送。
进一步地,上述方法中,当文件传输请求为文件拉取请求时,所述服务器端向客户端发起文件拉取请求,具体包括:
服务器端建立一个与所要拉取文件对应大小的稀疏文件,并将所要拉取文件在客户端中的参数信息,转换成字节流,同生成的任务ID,一起密文发送给客户端,并将该任务放到任务队列中;
接收该任务ID对应客户端所返回的返回值、标准输出信息及标准错误输出信息,将标准输出信息的内容写入本地文件,即从客户端拉取到文件。
进一步地,上述方法中,若服务器端接收到的客户端返回值为0,则文件拉取完成,否则文件拉取失败,标准错误输出信息会记录失败原因。
进一步地,上述方法中,所述文件拉取完成后,还包括:
计算拉取到文件的第二信息摘要算法MD5值,若其与客户端文件的第一信息摘要算法MD5值相同,则该拉取文件有效。
进一步地,上述方法中,当文件传输请求为文件推送请求时,所述服务器端向客户端发起文件推送请求,具体包括:
服务器端将所要推送文件在客户端存放的参数信息,以及生成的任务ID序列化后,转换成字节流,密文发送给客户端,并将该任务放到任务队列中;
执行文件读取,分别获取该读取文件返回值、标准输出信息及标准错误输出信息,携带任务ID转换成字节流,一起密文发送给客户端;
接收客户端对推送文件的校验结果,若客户端计算的推送文件的第二信息摘要算法MD5值,与服务器端发送的第一信息摘要算法MD5值相同,则推送文件有效。
进一步地,上述方法中,若服务器端对应客户端上的任务队列里没有任务,即关闭与客户端的连接。
根据本申请的一个方面,提供了另一种基于安全套接层协议认证的文件传输方法,该方法包括:
客户端通过套接字socket与携带安全套接层协议SSL证书的服务器端建立长连接,并将该长连接放入到一个连接队列中;
所述客户端接收服务器端发送的文件传输请求,并将所要传输文件的参数信息附加到心跳包中响应服务器端。
进一步地,上述方法中,所述客户端通过与携带SSL证书的服务器端进行身份认证、初始化协商加密算法、交换加密密钥完成认证。
进一步地,上述方法中,通过下列方式确定客户端与服务器端建立长连接:
在所述客户端与服务器端之间创建心跳机制。
进一步地,上述方法中,所述传输文件的参数信息,包括:传输的文件名称、文件生成时间、文件大小及该文件对应的信息摘要算法MD5值。
进一步地,上述方法中,所述文件传输包括文件拉取和文件推送。
进一步地,上述方法中,当文件传输请求为文件拉取请求时,所述客户端接收服务器端发送的文件拉取请求,具体包括:
客户端接收服务器端拉取文件的请求,将服务器端发送的字节流解密并转换成拉取文件的参数信息,同任务ID一起放入到任务队列中;
执行文件读取,分别获取该读取文件返回值、标准输出信息及标准错误输出信息,携带任务ID转换成字节流,一起密文发给服务器端。
进一步地,上述方法中,所述标准输出信息包括文件内容,所述标准错误输出信息记录失败原因。
进一步地,上述方法中,当文件传输请求为文件推送请求时,所述客户端接收服务器端发送的文件推送请求,具体包括:
客户端接收到服务器端序列化后的文件推送参数信息后,建立一个与所要推拉文件对应大小的稀疏文件,将任务ID放入到任务队列中,并响应服务器端;
接收该任务ID文件推送的返回值、标准输出信息及标准错误输出信息,将标准输出的内容写入本地文件,即推送文件到客户端。
进一步地,上述方法中,若客户端接收到的返回值为0,则文件推送成功,否则文件推送失败,标准错误输出信息会记录失败原因,并将结果密文发送给服务器端。
进一步地,上述方法中,所述文件推送成功后,还包括:
将推送成功的文件第二信息摘要算法MD5值与服务器端发送的第一信息摘要算法MD5值进行文件校验;
若客户端计算的推送文件的第二信息摘要算法MD5值,与服务器端发送的第一信息摘要算法MD5值相同,则推送文件有效,将该结果密文发送给服务器端。
进一步地,上述方法中,若客户端对应服务器端上的任务队列里没有任务,即关闭与服务器端的连接。
根据本申请的另一个方面,提供了一种基于安全套接层协议认证的文件传输设备,所述设备包括:
第一连接模块,携带安全套接层协议SSL证书,通过套接字socket与客户端建立长连接,并将该长连接放入到一个连接队列中;
发送接收模块,用于向客户端发送文件传输请求,接收客户端将所要传输文件的参数信息附加到心跳包中的响应;
操作模块,用于当所述心跳包中有所要传输的文件,即对该文件进行传输操作。
进一步地,上述设备中,还包括:
第一认证模块,用于与客户端进行身份认证、初始化协商加密算法、交换加密密钥完成认证。
进一步地,上述设备中,还包括:
第一创建模块,用于通过在所述服务器端与客户端之间创建心跳机制,来确定服务器端与客户端建立长连接。
进一步地,上述设备中,所述传输文件的参数信息,包括:传输的文件名称、文件生成时间、文件大小及该文件对应的信息摘要算法MD5值。
进一步地,上述设备中,所述文件传输包括文件拉取和文件推送。
进一步地,上述设备中,所述发送接收模块,还用于当文件传输请求为文件拉取请求时,向客户端发起文件拉取请求,具体包括:
第一发送单元,用于建立一个与所要拉取文件对应大小的稀疏文件,并将所要拉取文件在客户端中的参数信息,转换成字节流,同生成的任务ID,一起密文发送给客户端,并将该任务放到任务队列中;
第一接收单元,用于接收该任务ID对应客户端所返回的返回值、标准输出信息及标准错误输出信息,将标准输出信息的内容写入本地文件,即从客户端拉取到文件。
进一步地,上述设备中,若所述接收单元接收到的客户端返回值为0,则文件拉取完成,否则文件拉取失败,标准错误输出信息会记录失败原因。
进一步地,上述设备中,若所述接收单元对文件拉取完成后,还包括:
第一计算单元,计算拉取到文件的第二信息摘要算法MD5值,若其与客户端文件的第一信息摘要算法MD5值相同,则该拉取文件有效。
进一步地,上述设备中,所述发送接收模块,还用于当文件传输请求为文件推送请求时,向客户端发起文件推送请求,具体包括:
第二发送单元,用于将所要推送文件在客户端存放的参数信息,以及生成的任务ID序列化后,转换成字节流,密文发送给客户端,并将该任务放到任务队列中;
第一获取单元,用于执行文件读取,分别获取该读取文件返回值、标准输出信息及标准错误输出信息,携带任务ID转换成字节流,一起密文发送给客户端;
第二接收单元,用于接收客户端对推送文件的校验结果,若客户端计算的推送文件的第二信息摘要算法MD5值,与服务器端发送的第一信息摘要算法MD5值相同,则推送文件有效。
进一步地,上述设备中,还包括:
第一关闭单元,用于当服务器端对应客户端上的任务队列里没有任务时,即关闭与客户端的连接。
根据本申请的另一个方面,提供了另一种基于安全套接层协议认证的文件传输设备,所述设备包括:
第二连接模块,用于通过套接字socket与携带安全套接层协议SSL证书的服务器端建立长连接,并将该长连接放入到一个连接队列中;
接收发送模块,用于接收服务器端发送的文件传输请求,并将所要传输文件的参数信息附加到心跳包中响应服务器端。
进一步地,上述设备中,还包括:
第二认证模块,用于与携带SSL证书的服务器端进行身份认证、初始化协商加密算法、交换加密密钥完成认证。
进一步地,上述设备中,还包括:
第二创建模块,用于通过在所述客户端与服务器端之间创建心跳机制,来确定客户端与服务器端建立长连接。
进一步地,上述设备中,所述传输文件的参数信息,包括:传输的文件名称、文件生成时间、文件大小及该文件对应的信息摘要算法MD5值。
进一步地,上述设备中,所述文件传输包括文件拉取和文件推送。
进一步地,上述设备中,所述接收发送模块,还用于当文件传输请求为文件拉取请求时,接收服务器端发送的文件拉取请求,具体包括:
第三接收单元,用于接收服务器端拉取文件的请求,将服务器端发送的字节流解密并转换成拉取文件的参数信息,同任务ID一起放入到任务队列中;
第二获取单元,用于执行文件读取,分别获取该读取文件返回值、标准输出信息及标准错误输出信息,携带任务ID转换成字节流,一起密文发给服务器端。
进一步地,上述设备中,所述第二获取单元中,标准输出信息包括文件内容,所述标准错误输出信息记录失败原因。
进一步地,上述设备中,所述接收发送模块,还用于当文件传输请求为文件推送请求时,接收服务器端发送的文件推送请求,具体包括:
响应单元,用于在接收服务器端序列化后的文件推送参数信息后,建立一个与所要推拉文件对应大小的稀疏文件,将任务ID放入到任务队列中,并响应服务器端;
第四接收单元,用于接收该任务ID文件推送的返回值、标准输出信息及标准错误输出信息,将标准输出的内容写入本地文件,即推送文件到客户端。
进一步地,上述设备中,若第四接收单元接收到的返回值为0,则文件推送成功,否则文件推送失败,标准错误输出信息会记录失败原因,并将结果密文发送给服务器端。
进一步地,上述设备中,所述第四接收单元文件推送成功后,还包括:
检验单元,用于将推送成功的文件第二信息摘要算法MD5值与服务器端发送的第一信息摘要算法MD5值进行文件校验;
第二计算单元,计算推送文件的第二信息摘要算法MD5值,若其与服务器端发送的第一信息摘要算法MD5值相同,则推送文件有效,将该结果密文发送给服务器端。
进一步地,上述设备中,还包括:
第二关闭单元,用于当客户端对应服务器端上的任务队列里没有任务时,即关闭与服务器端的连接。
与现有技术相比,本申请服务器端携带安全套接层协议SSL证书,通过套接字socket与客户端建立长连接,并将该长连接放入到一个连接队列中。本申请服务器端与客户端通讯使用SSL认证和加密。所述服务器端向客户端发送文件传输请求,接收客户端将所要传输文件的参数信息附加到心跳包中的响应;若所述心跳包中有所要传输的文件,服务器端即对该文件进行传输操作。本申请服务器端与客户端使用长连接,将服务器传输的文件参数请求和响应附加到心跳包内,如果有所要传输的文件,则进行文件传输操作。本申请基于安全套接层协议SSL认证,在局域网内,使服务器可以自由地向客户端发起文件传输操作,并且对平台无任何限制,实现全平台化。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个方面的一种基于安全套接层协议认证的文件传输方法流程图;
图2示出根据本申请一个方面的一种服务器端向客户端发起文件拉取请求的方法流程图;
图3示出根据本申请一个方面的一种服务器端向客户端发起文件推送请求的方法流程图;
图4示出根据本申请一个方面的另一种基于安全套接层协议认证的文件传输方法流程图;
图5示出根据本申请一个方面的另一种服务器端向客户端发起文件拉取请求的方法流程图;
图6示出根据本申请一个方面的另一种服务器端向客户端发起文件推送请求的方法流程图;
图7示出根据本申请另一个方面的一种基于安全套接层协议认证的文件传输设备结构示意图;
图8示出根据本申请另一个方面的一种服务器端向客户端发起文件拉取请求的结构示意图;
图9示出根据本申请另一个方面的一种服务器端向客户端发起文件推送请求的结构示意图;
图10示出根据本申请另一个方面的另一种基于安全套接层协议认证的文件传输设备结构示意图;
图11示出根据本申请另一个方面的另一种服务器端向客户端发起文件拉取请求的结构示意图;
图12示出根据本申请另一个方面的另一种服务器端向客户端发起文件推送请求的结构示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
下面结合说明书附图对本申请实施例作进一步详细描述。
如图1所示,根据本申请的一个方面,提供了一种基于安全套接层协议认证的文件传输方法,其中,所述方法包括:
步骤S101,服务器端携带安全套接层协议SSL证书,通过套接字socket与客户端建立长连接,并将该长连接放入到一个连接队列中;
步骤S102,所述服务器端向客户端发送文件传输请求,接收客户端将所要传输文件的参数信息附加到心跳包中的响应;
步骤S103,若所述心跳包中有所要传输的文件,服务器端即对该文件进行传输操作。
进一步地,上述方法中,所述服务器端携带SSL证书,通过与客户端进行身份认证、初始化协商加密算法、交换加密密钥完成认证。
本申请实施例服务器端与客户端通讯使用SSL认证和加密,保证通讯安全。本申请服务器端与客户端使用长连接,将服务器传输的文件参数请求和响应附加到心跳包内,如果有所要传输的文件,则进行文件传输操作。本申请基于安全套接层协议SSL认证,在局域网内,使服务器可以自由地向客户端发起文件传输操作,并且对平台无任何限制,实现全平台化。
进一步地,上述方法中,通过下列方式确定服务器端与客户端建立长连接:
在所述服务器端与客户端之间创建心跳机制。
可选的,网络中的接收和发送数据都是使用操作系统中的socket进行实现。但是如果此套接字已经断开,那发送数据和接收数据的时候就一定会有问题。那么如何判断这个套接字是否还可以继续使用呢,这时就需要在系统中创建心跳机制。本申请实施例正是基于此,在所述服务器端与客户端之间创建心跳机制,用以维持长连接。
进一步地,上述方法中,所述传输文件的参数信息,包括:传输的文件名称、文件生成时间、文件大小及该文件对应的信息摘要算法MD5值。
进一步地,上述方法中,所述文件传输包括文件拉取和文件推送。
本申请实施例,如图2所示,当文件传输请求为文件拉取请求时,所述服务器端向客户端发起文件拉取请求,具体包括:
步骤S201,服务器端建立一个与所要拉取文件对应大小的稀疏文件,并将所要拉取文件在客户端中的参数信息,转换成字节流,同生成的任务ID,一起密文发送给客户端,并将该任务放到任务队列中;
步骤S202,接收该任务ID对应客户端所返回的返回值、标准输出信息及标准错误输出信息,将标准输出信息的内容写入本地文件,即从客户端拉取到文件。
本申请实施例服务器端建立一个与所要拉取文件对应大小的稀疏文件,主要是为拉取过来的文件预先分配一个固定大小的文件,避免因为在拉取过程中由于存储容量减少而导致的文件拉取失败。
本申请实施中,服务器端开启三个线程,分别接收该任务ID对应客户端所返回的返回值、标准输出信息及标准错误输出信息,将标准输出信息的内容写入本地文件,即最终从客户端拉取到服务器对应的文件。
具体的,本申请实施例中任务ID是当前拉取文件的唯一标识码,可以由当前时间戳生成,因此,任务ID永远不会重复。
进一步地,上述方法中,若服务器端接收到的客户端返回值为0,则文件拉取完成,否则文件拉取失败,标准错误输出信息会记录失败原因。
进一步地,上述方法中,所述文件拉取完成后,还包括:
计算拉取到文件的第二信息摘要算法MD5值,若其与客户端文件的第一信息摘要算法MD5值相同,则该拉取文件有效。
本申请实施例文件传输完成后,对文件进行MD5值校验,保证传输成功后的文件可用。
本申请实施例,如图3所示,当文件传输请求为文件推送请求时,所述服务器端向客户端发起文件推送请求,具体包括:
步骤S301,服务器端将所要推送文件在客户端存放的参数信息,以及生成的任务ID序列化后,转换成字节流,密文发送给客户端,并将该任务放到任务队列中;
步骤S302,执行文件读取,分别获取该读取文件返回值、标准输出信息及标准错误输出信息,携带任务ID转换成字节流,一起密文发送给客户端;
步骤S303,接收客户端对推送文件的校验结果,若客户端计算的推送文件的第二信息摘要算法MD5值,与服务器端发送的第一信息摘要算法MD5值相同,则推送文件有效。
进一步地,上述方法中,若服务器端对应客户端上的任务队列里没有任务,即关闭与客户端的连接。
本申请实施例中,如果服务器对应客户端上的任务对列里面有任务,则取消连接失败,如否,则服务器端关闭与客户端的连接。
本申请实施例,服务器端可向多个客户端进行文件推送和拉取操作,互不干扰。服务器端也可向一个客户端同时进行多个文件的推送和拉取操作,互不干扰。本申请实施例,文件传输完成之后,对文件进行MD5值校验,保证传输成功后的文件可用。
如图4所示,根据本申请的一个方面,提供了一种基于安全套接层协议认证的文件传输方法,该方法包括:
步骤S401,客户端通过套接字socket与携带安全套接层协议SSL证书的服务器端建立长连接,并将该长连接放入到一个连接队列中;
步骤S402,所述客户端接收服务器端发送的文件传输请求,并将所要传输文件的参数信息附加到心跳包中响应服务器端。
进一步地,上述方法中,所述客户端通过与携带SSL证书的服务器端进行身份认证、初始化协商加密算法、交换加密密钥完成认证。
本申请实施例客户端与服务器端通讯使用SSL认证和加密,保证通讯安全。本申请客户端与服务器端使用长连接,将服务器传输的文件参数请求和响应附加到心跳包内,如果有所要传输的文件,则进行文件传输操作。本申请基于安全套接层协议SSL认证,在局域网内,使服务器可以自由地向客户端发起文件传输操作,并且对平台无任何限制,实现全平台化。
进一步地,上述方法中,通过下列方式确定客户端与服务器端建立长连接:
在所述客户端与服务器端之间创建心跳机制。
可选的,网络中的接收和发送数据都是使用操作系统中的socket进行实现。但是如果此套接字已经断开,那发送数据和接收数据的时候就一定会有问题。那么如何判断这个套接字是否还可以继续使用呢,这时就需要在系统中创建心跳机制。本申请实施例正是基于此,在所述客户端与服务器端之间创建心跳机制,用以维持长连接。
进一步地,上述方法中,所述传输文件的参数信息,包括:传输的文件名称、文件生成时间、文件大小及该文件对应的信息摘要算法MD5值。
进一步地,上述方法中,所述文件传输包括文件拉取和文件推送。
本申请实施例,如图5所示,当文件传输请求为文件拉取请求时,所述客户端接收服务器端发送的文件拉取请求,具体包括:
步骤S501,客户端接收服务器端拉取文件的请求,将服务器端发送的字节流解密并转换成拉取文件的参数信息,同任务ID一起放入到任务队列中;
步骤S502,执行文件读取,分别获取该读取文件返回值、标准输出信息及标准错误输出信息,携带任务ID转换成字节流,一起密文发给服务器端。
进一步地,上述方法中,所述标准输出信息包括文件内容,所述标准错误输出信息记录失败原因。
本申请实施中,客户端开启一个线程执行文件读取,并开启三个线程,分别获取该读取文件返回值、标准输出信息及标准错误输出信息。具体的,将失败原因给标准错误输出信息,将文件内容给标准输出,读取文件完成后给返回值。
本申请实施例,如图6所示,当文件传输请求为文件推送请求时,所述客户端接收服务器端发送的文件推送请求,具体包括:
步骤S601,客户端接收到服务器端序列化后的文件推送参数信息后,建立一个与所要推拉文件对应大小的稀疏文件,将任务ID放入到任务队列中,并响应服务器端;
步骤S602,接收该任务ID文件推送的返回值、标准输出信息及标准错误输出信息,将标准输出的内容写入本地文件,即推送文件到客户端。
本申请实施例客户端建立一个与推拉文件对应大小的稀疏文件,主要是为推送过来的文件预先分配一个固定大小的文件,避免因为在推送过程中由于存储容量减少而导致的文件推送失败。
本申请客户端开启三个线程,分别接收该任务ID文件推送的返回值、标准输出信息及标准错误输出信息,将标准输出的内容写入本地文件,即最终向客户端推送到服务器对应的文件。
进一步地,上述方法中,若客户端接收到的返回值为0,则文件推送成功,否则文件推送失败,标准错误输出信息会记录失败原因,并将结果密文发送给服务器端。
进一步地,上述方法中,所述文件推送成功后,还包括:
将推送成功的文件第二信息摘要算法MD5值与服务器端发送的第一信息摘要算法MD5值进行文件校验;
若客户端计算的推送文件的第二信息摘要算法MD5值,与服务器端发送的第一信息摘要算法MD5值相同,则推送文件有效,将该结果密文发送给服务器端。
本申请实施例,文件传输完成之后,对文件进行MD5值校验,保证传输成功后的文件可用。
进一步地,上述方法中,若客户端对应服务器端上的任务队列里没有任务,即关闭与服务器端的连接。
本申请实施例中,如果客户端对应服务器端上的任务对列里面有任务,则取消连接失败,如否,则客户端关闭与服务器端的连接。
本申请实施例,服务器端若向客户端推送或拉取文件,客户端代码是无需做变动的,只需程序开发人员在服务器端调用相应的API接口,向客户端发出推送或拉取文件的请求即可,故大大减少了客户端代码维护难度。本申请客户端代码与业务相分离,服务器端向客户端拉取的文件,客户端只需定义序列化使用的协议及调用接口,即可实现文件传输。
本申请实施例将客户端推送和拉取文件与服务器端向客户端推送或拉取文件的操作很好的分开,降低了系统的耦合度,优化了系统代码结果。
综上所述,本申请基于安全套接层协议SSL认证,在局域网内,使服务器可以自由地向客户端发起文件传输操作,提高了文件传输效率和安全性,实现了客户端全平台支持,降低了代码的耦合度,优化了系统代码结果。
基于相同的技术构思,本申请还提供一种基于安全套接层协议认证的文件传输设备,该设备可执行上述方法实施例,由于该设备解决问题的原理与前述一种基于安全套接层协议认证的文件传输方法相似,因此该设备的实施可以参见方法的实施。
本申请的另一个方面提供了一种基于安全套接层协议认证的文件传输设备,如图7所示,该设备包括:
第一连接模块701,携带安全套接层协议SSL证书,通过套接字socket与客户端建立长连接,并将该长连接放入到一个连接队列中;
发送接收模块702,用于向客户端发送文件传输请求,接收客户端将所要传输文件的参数信息附加到心跳包中的响应;
操作模块703,用于当所述心跳包中有所要传输的文件,即对该文件进行传输操作。
进一步地,上述设备中,还包括:
第一认证模块,用于与客户端进行身份认证、初始化协商加密算法、交换加密密钥完成认证。
本申请实施例服务器端与客户端通讯使用SSL认证和加密,保证通讯安全。本申请服务器端与客户端使用长连接,将服务器传输的文件参数请求和响应附加到心跳包内,如果有所要传输的文件,则进行文件传输操作。本申请基于安全套接层协议SSL认证,在局域网内,使服务器可以自由地向客户端发起文件传输操作,并且对平台无任何限制,实现全平台化。
进一步地,上述设备中,还包括:
第一创建模块,用于通过在所述服务器端与客户端之间创建心跳机制,来确定服务器端与客户端建立长连接。
可选的,网络中的接收和发送数据都是使用操作系统中的socket进行实现。但是如果此套接字已经断开,那发送数据和接收数据的时候就一定会有问题。那么如何判断这个套接字是否还可以继续使用呢,这时就需要在系统中创建心跳机制。本申请实施例正是基于此,在所述服务器端与客户端之间创建心跳机制,用以维持长连接。
进一步地,上述设备中,所述传输文件的参数信息,包括:传输的文件名称、文件生成时间、文件大小及该文件对应的信息摘要算法MD5值。
进一步地,上述设备中,所述文件传输包括文件拉取和文件推送。
进一步地,如图8所示,所述发送接收模块702,还用于当文件传输请求为文件拉取请求时,向客户端发起文件拉取请求,具体包括:
第一发送单元801,用于建立一个与所要拉取文件对应大小的稀疏文件,并将所要拉取文件在客户端中的参数信息,转换成字节流,同生成的任务ID,一起密文发送给客户端,并将该任务放到任务队列中;
第一接收单元802,用于接收该任务ID对应客户端所返回的返回值、标准输出信息及标准错误输出信息,将标准输出信息的内容写入本地文件,即从客户端拉取到文件。
本申请实施例第一发送单元801建立一个与所要拉取文件对应大小的稀疏文件,主要是为拉取过来的文件预先分配一个固定大小的文件,避免因为在拉取过程中由于存储容量减少而导致的文件拉取失败。
本申请实施中,第一接收单元802开启三个线程,分别接收该任务ID对应客户端所返回的返回值、标准输出信息及标准错误输出信息,将标准输出信息的内容写入本地文件,即最终从客户端拉取到服务器对应的文件。
具体的,本申请实施例中任务ID是当前拉取文件的唯一标识码,可以由当前时间戳生成,因此,任务ID永远不会重复。
进一步地,上述设备中,若所述接收单元接收到的客户端返回值为0,则文件拉取完成,否则文件拉取失败,标准错误输出信息会记录失败原因。
进一步地,上述设备中,若所述接收单元对文件拉取完成后,还包括:
第一计算单元,计算拉取到文件的第二信息摘要算法MD5值,若其与客户端文件的第一信息摘要算法MD5值相同,则该拉取文件有效。
本申请实施例文件传输完成后,对文件进行MD5值校验,保证传输成功后的文件可用。
进一步地,如图9所示,所述发送接收模块702,还用于当文件传输请求为文件推送请求时,向客户端发起文件推送请求,具体包括:
第二发送单元901,用于将所要推送文件在客户端存放的参数信息,以及生成的任务ID序列化后,转换成字节流,密文发送给客户端,并将该任务放到任务队列中;
第一获取单元902,用于执行文件读取,分别获取该读取文件返回值、标准输出信息及标准错误输出信息,携带任务ID转换成字节流,一起密文发送给客户端;
第二接收单元903,用于接收客户端对推送文件的校验结果,若客户端计算的推送文件的第二信息摘要算法MD5值,与服务器端发送的第一信息摘要算法MD5值相同,则推送文件有效。
进一步地,上述设备中,还包括:
第一关闭单元,用于当服务器端对应客户端上的任务队列里没有任务时,即关闭与客户端的连接。
根据本申请的另一个方面,提供了一种基于安全套接层协议认证的文件传输设备,如图10所示,所述设备包括:
第二连接模块1001,用于通过套接字socket与携带安全套接层协议SSL证书的服务器端建立长连接,并将该长连接放入到一个连接队列中;
接收发送模块1002,用于接收服务器端发送的文件传输请求,并将所要传输文件的参数信息附加到心跳包中响应服务器端。
进一步地,上述设备中,还包括:
第二认证模块,用于与携带SSL证书的服务器端进行身份认证、初始化协商加密算法、交换加密密钥完成认证。
本申请实施例客户端与服务器端通讯使用SSL认证和加密,保证通讯安全。本申请客户端与服务器端使用长连接,将服务器传输的文件参数请求和响应附加到心跳包内,如果有所要传输的文件,则进行文件传输操作。本申请基于安全套接层协议SSL认证,在局域网内,使服务器可以自由地向客户端发起文件传输操作,并且对平台无任何限制,实现全平台化。
进一步地,上述设备中,还包括:
第二创建模块,用于通过在所述客户端与服务器端之间创建心跳机制,来确定客户端与服务器端建立长连接。
可选的,网络中的接收和发送数据都是使用操作系统中的socket进行实现。但是如果此套接字已经断开,那发送数据和接收数据的时候就一定会有问题。那么如何判断这个套接字是否还可以继续使用呢,这时就需要在系统中创建心跳机制。本申请实施例正是基于此,在所述客户端与服务器端之间创建心跳机制,用以维持长连接。
进一步地,上述设备中,所述传输文件的参数信息,包括:传输的文件名称、文件生成时间、文件大小及该文件对应的信息摘要算法MD5值。
进一步地,上述设备中,所述文件传输包括文件拉取和文件推送。
进一步地,如图11所示,所述接收发送模块802,还用于当文件传输请求为文件拉取请求时,接收服务器端发送的文件拉取请求,具体包括:
第三接收单元1101,用于接收服务器端拉取文件的请求,将服务器端发送的字节流解密并转换成拉取文件的参数信息,同任务ID一起放入到任务队列中;
第二获取单元1102,用于执行文件读取,分别获取该读取文件返回值、标准输出信息及标准错误输出信息,携带任务ID转换成字节流,一起密文发给服务器端。
进一步地,上述设备中,所述第二获取单元1102中,标准输出信息包括文件内容,所述标准错误输出信息记录失败原因。
本申请实施中,第二获取单元1102开启一个线程执行文件读取,并开启三个线程,分别获取该读取文件返回值、标准输出信息及标准错误输出信息。具体的,将失败原因给标准错误输出信息,将文件内容给标准输出,读取文件完成后给返回值。
进一步地,如图12所示,所述接收发送模块802,还用于当文件传输请求为文件推送请求时,接收服务器端发送的文件推送请求,具体包括:
响应单元1201,用于在接收服务器端序列化后的文件推送参数信息后,建立一个与所要推拉文件对应大小的稀疏文件,将任务ID放入到任务队列中,并响应服务器端;
第四接收单元1202,用于接收该任务ID文件推送的返回值、标准输出信息及标准错误输出信息,将标准输出的内容写入本地文件,即推送文件到客户端。
本申请实施例响应单元1201建立一个与推拉文件对应大小的稀疏文件,主要是为推送过来的文件预先分配一个固定大小的文件,避免因为在推送过程中由于存储容量减少而导致的文件推送失败。
本申请第四接收单元1202开启三个线程,分别接收该任务ID文件推送的返回值、标准输出信息及标准错误输出信息,将标准输出的内容写入本地文件,即最终向客户端推送到服务器对应的文件。
进一步地,上述设备中,若第四接收单元1202接收到的返回值为0,则文件推送成功,否则文件推送失败,标准错误输出信息会记录失败原因,并将结果密文发送给服务器端。
进一步地,上述设备中,所述第四接收单元1202文件推送成功后,还包括:
检验单元,用于将推送成功的文件第二信息摘要算法MD5值与服务器端发送的第一信息摘要算法MD5值进行文件校验;
第二计算单元,计算推送文件的第二信息摘要算法MD5值,若其与服务器端发送的第一信息摘要算法MD5值相同,则推送文件有效,将该结果密文发送给服务器端。
本申请实施例,文件传输完成之后,对文件进行MD5值校验,保证传输成功后的文件可用。
进一步地,上述设备中,还包括:
第二关闭单元,用于当客户端对应服务器端上的任务队列里没有任务时,即关闭与服务器端的连接。
本申请实施例中,如果客户端对应服务器端上的任务对列里面有任务,则取消连接失败,如否,则客户端关闭与服务器端的连接。
本申请实施例,服务器端若向客户端推送或拉取文件,客户端代码是无需做变动的,只需程序开发人员在服务器端调用相应的API接口,向客户端发出推送或拉取文件的请求即可,故大大减少了客户端代码维护难度。本申请客户端代码与业务相分离,服务器端向客户端拉取的文件,客户端只需定义序列化使用的协议及调用接口,即可实现文件传输。
本申请实施例将客户端推送和拉取文件与服务器端向客户端推送或拉取文件的操作很好的分开,降低了系统的耦合度,优化了系统代码结果。
综上所述,本申请基于安全套接层协议SSL认证,在局域网内,使服务器可以自由地向客户端发起文件传输操作,提高了文件传输效率和安全性,实现了客户端全平台支持,降低了代码的耦合度,优化了系统代码结果。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,在本申请一实施例中,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,在本申请一实施例中,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,在本申请一实施例中,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,在本申请一实施例中计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在本申请一实施例中,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。