一種基於安全套接層協議認證的文件傳輸方法及設備與流程
2023-05-08 12:22:51

本申請涉及計算機領域,尤其涉及一種基於安全套接層協議認證的文件傳輸方法及設備。
背景技術:
隨著網際網路的快速發展,文件共享已司空見慣,常見文件共享有網絡文件系統(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存儲器,磁或光碟機動器或軟磁碟及類似設備。另外,本申請的一些步驟或功能可採用硬體來實現,在本申請一實施例中,作為與處理器配合從而執行各個步驟或功能的電路。
另外,本申請的一部分可被應用為電腦程式產品,在本申請一實施例中電腦程式指令,當其被計算機執行時,通過該計算機的操作,可以調用或提供根據本申請的方法和/或技術方案。而調用本申請的方法的程序指令,可能被存儲在固定的或可移動的記錄介質中,和/或通過廣播或其他信號承載媒體中的數據流而被傳輸,和/或被存儲在根據所述程序指令運行的計算機設備的工作存儲器中。在本申請一實施例中,根據本申請的一個實施例包括一個裝置,該裝置包括用於存儲電腦程式指令的存儲器和用於執行程序指令的處理器,其中,當該電腦程式指令被該處理器執行時,觸發該裝置運行基於前述根據本申請的多個實施例的方法和/或技術方案。
對於本領域技術人員而言,顯然本申請不限於上述示範性實施例的細節,而且在不背離本申請的精神或基本特徵的情況下,能夠以其他的具體形式實現本申請。因此,無論從哪一點來看,均應將實施例看作是示範性的,而且是非限制性的,本申請的範圍由所附權利要求而不是上述說明限定,因此旨在將落在權利要求的等同要件的含義和範圍內的所有變化涵括在本申請內。不應將權利要求中的任何附圖標記視為限制所涉及的權利要求。此外,顯然「包括」一詞不排除其他單元或步驟,單數不排除複數。裝置權利要求中陳述的多個單元或裝置也可以由一個單元或裝置通過軟體或者硬體來實現。第一,第二等詞語用來表示名稱,而並不表示任何特定的順序。