亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于SCTP的嵌入式Linux系統數據傳輸的方法及系統的制作方法

文檔序號:7600221閱讀:213來源:國知局
專利名稱:一種基于SCTP的嵌入式Linux系統數據傳輸的方法及系統的制作方法
技術領域
本發(fā)明涉及嵌入式數據傳輸技術領域,具體涉及一種基于SCTP的嵌入式Linux系 統數據傳輸的方法及系統。
背景技術
介于應用層和網絡層之間的傳輸層是分層網絡體系結構的重心部分。它的重要任 務就是直接給運行在不同主機上的應用程序提供通信服務,在最近的20年里,絕大多數的 網絡結構都是基于TCP和UDP協議的。然而,計算機網絡的快速發(fā)展使得TCP和UDP在某 些方面已經不能適應網絡發(fā)展的需要,因此IETF將SCTP修訂成為傳輸層標準協議的一部 分。在使用TCP進行傳輸大容量文件的時候可能會產生嚴重的錯誤,當TCP傳輸一個 文件的時候,它將產生一個字節(jié)流連接,字節(jié)流意味著將數據拆分成若干字節(jié)并且不用了 解這些字節(jié)的內容而直接傳輸,在應用層消息和數據是截然不同的。因此,當程序用TCP傳 輸某個數據的時候卻收到了另外一個程序的數據,它的扇區(qū)將會收到干擾,因為數據被分 成了字節(jié)然后就立即傳輸了。另外字節(jié)流通信會帶來頭端阻塞的問題。為了解決上述問題,可以為一個應用程序數據分配一條連接,但是太多的連接會 導致服務器超載,利用SCTP協議傳輸能很好的解決這些問題。當在傳輸的過程中有一個包 丟失的時候,利用SCTP基于流傳輸的特性,其他的流無需等待丟失包完成重傳,可以無延 時地繼續(xù)傳輸。另外,利用SCTP的多流傳輸能提高傳輸速度。

發(fā)明內容
本發(fā)明提供一種基于SCTP的嵌入式Linux系統數據傳輸的方法及系統,能夠為嵌 入式系統提供高速數據傳輸的能力。本發(fā)明提供一種基于SCTP的嵌入式Linux系統數據傳輸的方法,包括步驟1 將SCTP開發(fā)庫移植到嵌入式Linux開發(fā)環(huán)境中;步驟2 建立SCTP文件傳輸服務器,等待SCTP文件傳輸客戶端連接到來;步驟3 建立SCTP文件傳輸客戶端,連接到SCTP文件傳輸服務器;步驟4 根據用戶需求,SCTP文件傳輸客戶端和SCTP文件傳輸服務器端進行文件 傳輸的交互。同時,本發(fā)明還提供了一種基于SCTP的嵌入式Linux系統數據傳輸的系統,其特 征在于,該系統包括以下單元SCTP文件傳輸客戶端單元,SCTP文件傳輸服務器單元;所述SCTP文件傳輸客戶端單元,用戶可以通過SCTP文件傳輸客戶端單元上傳或 者下載SCTP文件傳輸服務器單元上的數據;所述SCTP文件傳輸服務器單元管理和維護用戶數據。以上文件的傳輸通過傳輸層SCTP協議單元為嵌入式Linux操作系統提供SCTP協 議支持。
上述技術方案可以看出,本發(fā)明具有以下有益效果1.本發(fā)明可以為嵌入式Linux系統提供有別于TCP和UDP的傳輸層協議。2.本發(fā)明可以解決嵌入式Linux系統傳輸大容量文件時產生的頭端阻塞的問題。3.本發(fā)明可以在不增加系統負載的情況下提高嵌入式Linux系統傳輸大容量文 件的速度。


為了更清楚地說明本發(fā)明實施例或現有技術中的技術方案,下面將對實施例或現 有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以 根據這些附圖獲得其它的附圖。圖1是本發(fā)明整體結構圖;圖2是本發(fā)明方法流程圖;圖3是SCTP開發(fā)庫移植流程圖;圖4為SCTP文件傳輸服務器建立流程5為SCTP文件傳輸客戶端建立流程6為SCTP文件傳輸客戶端與SCTP文件傳輸服務器交互流程圖
具體實施例方式下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完 整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于 本發(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其它 實施例,都屬于本發(fā)明保護的范圍。本發(fā)明實施例提供一種基于SCTP的嵌入式Linux系統數據傳輸的方法,能夠為嵌 入式Linux系統提供高速數據傳輸的能力。以下分別進行詳細說明。圖1為本發(fā)明整體結構圖如圖1所示,本發(fā)明主要包括以下單元SCTP文件傳輸客戶端單元,SCTP文件傳輸 服務器單元;所述SCTP文件傳輸客戶端單元,用戶可以通過SCTP文件傳輸客戶端單元上傳或 者下載SCTP文件傳輸服務器單元上的數據;所述SCTP文件傳輸服務器單元管理和維護用戶數據;以上文件的傳輸通過傳輸層SCTP協議單元為嵌入式Linux操作系統提供SCTP協 議支持。圖2為本發(fā)明所述方法流程圖如圖2所示,包括步驟步驟1 將SCTP開發(fā)庫移植到嵌入式Linux開發(fā)環(huán)境中。步驟2 建立SCTP文件傳輸服務器,等待SCTP文件傳輸客戶端連接到來。步驟3 建立SCTP文件傳輸客戶端,連接到SCTP文件傳輸服務器。步驟4 根據用戶需求,SCTP文件傳輸客戶端和SCTP文件傳輸服務器端進行文件傳輸的交互。圖3為SCTP開發(fā)庫移植流程圖大部分交叉工具包都不包含SCTP開發(fā)庫,需要對SCTP開發(fā)庫進行交叉編譯,得到 符合嵌入式CPU架構的SCTP開發(fā)庫。步驟11 獲取Iksctp源碼。步驟12 配置 Iksctp 源碼,配置選項為./confgure-prefix = /opt/sctp-build =i386-host = arm CC = arm-linux-gcc,其中CC選項根據CPU架構來選擇,也可能是 mipsel-linux-gcc 之類。步驟 13 編譯 Iksctp 源碼,make&&make install。步驟14 將/opt/sctp下的include和lib文件夾下的文件拷貝到交叉工具包對 應的目錄下。圖4為SCTP文件傳輸服務器建立流程圖Sctp服務器中存儲數據,用戶可以選擇上傳或者下載。步驟21 建立 SCTP 套接字,sock_fd = socket (AF_INET, SOCK_SEQPACKET, IPPR0T0_SCTP);步驟22 :綁定地址和端口到SCTP套接字,地址為任意地址,即任意地址可以訪問 服務器,端口人為約定,盡量不使用Linux服務占用的端口 ;步驟23 設置所感興趣的通知,通過通知,服務器可以得到到來的信息是通過哪 個流傳輸的,設置方法為events. sctp_data_io_event = 1 ;setsockopt(sock_fd, IPPR0T0_SCTP, SCTP_EVENTS, &events,sizeof(events));步驟M 監(jiān)聽到來的連接,Listen (sock_fd, 2048),2048為允許的連接數。步驟25 與客戶端進行交互。圖5為SCTP文件傳輸客戶端建立流程圖步驟31 建立SCTP套接字,sock_fd = socket(AF_INET, S0CK_SEQPACKET, IPPR0T0_SCTP)步驟32 :設置所需要連接的服務器的IP地址和端口。步驟33 設置所感興趣的通知,通過通知,客戶端可以得到到來的信息是通過哪 個流傳輸的,設置方法為events. sctp_data_io_event = 1 ;setsockopt(sock_fd, IPPR0T0_SCTP, SCTP_EVENTS, &events,sizeof(events));步驟34 :與服務器進行交互。步驟35 關閉套接字并結束客戶端程序。圖6為SCTP文件傳輸客戶端與SCTP文件傳輸服務器交互流程圖使用TCP傳送多個文件模式客戶端一旦和服務器建立連接便向服務器發(fā)送獲取 第一個文件的請求,服務器建立一個子進程,這個子進程接管與客戶端通信的工作。當客戶 端成功的接收完第一個文件的時候,開始用流水線的方式請求剩下的多個文件,服務器上 的子進程接受到這些請求并一個接一個地將請求文件發(fā)送給客戶端??蛻舳艘粤魉€的方 式請求多個文件提高了效率,因為服務器不用發(fā)送完一個文件后去等待新的請求的到來,所有的文件傳輸都通過一個簡單的TCP連接。通過SCTP傳輸多個文件的方式和TCP的完全 不同,每個文件將通過單獨的流進行傳輸,這些流互不干擾,不會因為前一個文件的傳送失 敗而影響后續(xù)的傳輸,避免TCP帶來的頭端阻塞的問題。雖然SCTP利用多流進行傳輸,但 是并不需要為每個流創(chuàng)建一個子進程,這些流都屬于一個SCTP連接,既提高了傳輸速度, 又沒有增加服務器負載。步驟41 =SCTP文件傳輸客戶端要獲取SCTP文件傳輸服務器上某個大容量文件,發(fā) 送獲取該文件請求。步驟42 =SCTP文件傳輸服務器接收到SCTP文件傳輸客戶端獲取文件請求,創(chuàng)建一 個子進程,此子進程接管與SCTP文件傳輸客戶端的通信工作。步驟43 :SCTP文件傳輸服務器將請求文件進行拆分,拆分的策略由SCTP文件傳輸 服務器決定,但是應遵循原則一般越大的文件需要拆分的份數越多。步驟44 =SCTP文件傳輸服務器將拆分的文件份數通知給SCTP文件傳輸客戶端。步驟45 SCTP文件傳輸服務器將拆分的文件分別用不同的流傳輸給SCTP文 件傳輸客戶端,SCTP服務器端發(fā)送數據代碼為:sctp_sendmsg(connSock, (void*) buffer (size_t) strlen (buffer), NULL, 0,0,0, NUM0,0,0);其中 NUMO 定義#define NUMOO ;表示使用流0傳送buffer數據。同理,利用其它流發(fā)送數據只需要修改流號和需要 發(fā)送的數據。步驟46 =SCTP文件傳輸客戶端開始接收服務器發(fā)送過來的數據,SCTP文件傳輸客 戶端接收數據代碼為sctp_recvmsg(connSock, (void*)buffer, sizeof (buffer), (struct sockaddr*)NULL,0, &sndrcvinfo, &flags);其中 sndrcvinfo. sinfo_stream 指明 了這份數 據是通過哪個流傳傳輸的。根據SCTP文件傳輸服務器發(fā)送過來的拆分文件份數,SCTP文 件傳輸客戶端一共需要接收拆分文件份數的次數。步驟47 =SCTP文件傳輸客戶端接收完所有的文件后,開始對文件按流序號重組, 文件傳送完畢。需要說明的是,上述裝置和系統內的各單元之間的信息交互、執(zhí)行過程等內容,由 于與本發(fā)明方法實施例基于同一構思,具體內容可參見本發(fā)明方法實施例中的敘述,此處 不再贅述。本領域普通技術人員可以理解上述實施例的各種方法中的全部或部分步驟是可 以通過程序來指令相關的硬件來完成,該程序可以存儲于一計算機可讀存儲介質中,存 儲介質可以包括只讀存儲器(ROM,Read Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁盤或光盤等。以上對本發(fā)明實施例所提供的一種嵌入式系統高性能數據傳輸的方法進行了詳 細介紹,本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說 明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領域的一般技術人員,依據 本發(fā)明的思想,在具體實施方式
及應用范圍上均會有改變之處,綜上所述,本說明書內容不 應理解為對本發(fā)明的限制。
權利要求
1.一種基于SCTP的嵌入式Linux系統數據傳輸的方法,其特征在于,包括步驟1 將 SCTP開發(fā)庫移植到嵌入式Linux開發(fā)環(huán)境中;步驟2 建立SCTP文件傳輸服務器,等待SCTP文件傳輸客戶端連接到來; 步驟3 建立SCTP文件傳輸客戶端,連接到SCTP文件傳輸服務器; 步驟4 根據用戶需求,SCTP文件傳輸客戶端和SCTP文件傳輸服務器端進行文件傳輸 的交互。
2.根據權利要求1所述的方法,其特征在于,大部分交叉工具包都不包含SCTP開發(fā)庫, 需要對SCTP開發(fā)庫進行交叉編譯,得到符合嵌入式CPU架構的SCTP開發(fā)庫;步驟1的具體 操作流程如下步驟11 獲取IksctP源碼;步驟 12 配置 Iksctp 源碼,配置選項為./configure-prefix = /opt/sctp-build =i386-host = arm CC = arm-linux-gcc,其中CC選項根據CPU架構來選擇,也可能是 mipsel-linux-gcc 之類;步驟 13 編譯 Iksctp 源碼,make&&make install ;步驟14 將/opt/sctp下的include和lib文件夾下的文件拷貝到交叉工具包對應的 目錄下。
3.根據權利要求1所述的方法,其特征在于,步驟2的具體流程如下步驟 21 建立 SCTP 套接字,sock_fd = socket (AF_INET, SOCK_SEQPACKET, IPPR0T0_ SCTP);步驟22 綁定地址和端口到SCTP套接字,地址為任意地址,即任意地址可以訪問服務 器,端口人為約定,盡量不使用Linux服務占用的端口 ;步驟23 設置所感興趣的通知,通過通知,服務器可以得到到來的信息是通過哪個流 傳輸的,設置方法為events. sctp_data_io_event = 1 ;setsockopt(sock_fd, IPPR0T0_SCTP, SCTP_EVENTS,&events,sizeof (events)); 步驟M 監(jiān)聽到來的連接,Listen (sock_fd, 2048), 2048為允許的連接數; 步驟25:與客戶端進行交互。
4.根據權利要求1所述的方法,其特征在于,步驟3的具體流程如下 步驟31 建立SCTP套接字,sock_fd = socket (AF_INET, SOCK_SEQPACKET, IPPR0T0_SCTP); 步驟32 :設置所需要連接的服務器的IP地址和端口 ;步驟33 設置所感興趣的通知,通過通知,客戶端可以得到到來的信息是通過哪個流 傳輸的,設置方法為events. sctp_data_io_event = 1 ;setsockopt(sock_fd, IPPR0T0_SCTP, SCTP_EVENTS, &events,sizeof (events));步驟34:與服務器進行交互;步驟35 關閉套接字并結束客戶端程序。
5.根據權利要求1所述的方法,其特征在于,步驟4的具體流程如下步驟41 =SCTP文件傳輸客戶端要獲取SCTP文件傳輸服務器上某個大容量文件,發(fā)送獲取該文件請求;步驟42 =SCTP文件傳輸服務器接收到SCTP文件傳輸客戶端獲取文件請求,創(chuàng)建一個子 進程,此子進程接管與SCTP文件傳輸客戶端的通信工作;步驟43 :SCTP文件傳輸服務器將請求文件進行拆分,拆分的策略由SCTP文件傳輸服務 器決定,但是應遵循原則一般越大的文件需要拆分的份數越多;步驟44 =SCTP文件傳輸服務器將拆分的文件份數通知給SCTP文件傳輸客戶端; 步驟45 =SCTP文件傳輸服務器將拆分的文件分別用不同的流傳輸給SCTP文件傳輸客 戶端,SCTP 服務器端發(fā)送數據代碼為sctp_sendmsg(connSock,(void*)buffer,(size_t) strlen (buffer),NULL, 0,0,0, NUM0,0,0);其中 NUMO 定義#define NUMOO ;表示使用流 0 傳送buffer數據;同理,利用其它流發(fā)送數據只需要修改流號和需要發(fā)送的數據;步驟46 =SCTP文件傳輸客戶端開始接收服務器發(fā)送過來的數據,SCTP文件傳輸客戶 端接收數據代石馬為sctp_recvmsg(connSock,(void*)buffer, sizeof (buffer), (struct sockaddr*)NULL,0, &sndrcvinfo, &flags);其中 sndrcvinfo. sinfo_stream 指明 了這份數 據是通過哪個流傳傳輸的;根據SCTP文件傳輸服務器發(fā)送過來的拆分文件份數,SCTP文件 傳輸客戶端一共需要接收拆分文件份數的次數;步驟47 =SCTP文件傳輸客戶端接收完所有的文件后,開始對文件按流序號重組,文件 傳送完畢。
6. 一種基于SCTP的嵌入式Linux系統數據傳輸的系統,其特征在于,該系統包括以下 單元SCTP文件傳輸客戶端單元,SCTP文件傳輸服務器單元;所述SCTP文件傳輸客戶端單元,用戶可以通過SCTP文件傳輸客戶端單元上傳或者下 載SCTP文件傳輸服務器單元上的數據;所述SCTP文件傳輸服務器單元管理和維護用戶數據;以上文件的傳輸通過傳輸層SCTP協議單元為嵌入式Linux操作系統提供SCTP協議支持。
全文摘要
本發(fā)明公開了一種基于SCTP的嵌入式Linux系統數據傳輸的方法。本發(fā)明的方法包括將SCTP開發(fā)庫移植到嵌入式Linux開發(fā)環(huán)境中;建立SCTP文件傳輸服務器,等待SCTP文件傳輸客戶端連接到來;建立SCTP文件傳輸客戶端,連接到SCTP文件傳輸服務器;根據用戶需求,SCTP文件傳輸客戶端和SCTP文件傳輸服務器端進行文件傳輸的交互。同時,本發(fā)明還公開了一種基于SCTP的嵌入式Linux系統數據傳輸的系統。通過本發(fā)明技術方案能夠解決嵌入式Linux系統傳輸大容量文件時產生的頭端阻塞的問題。
文檔編號H04L29/06GK102137101SQ201110052728
公開日2011年7月27日 申請日期2011年3月4日 優(yōu)先權日2011年3月4日
發(fā)明者張潔, 文艷陽, 黃旭陽 申請人:中山中珩數字科技有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1