999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

MIF多接口終端多流并發下載的實現

2012-09-19 13:24:32張志飛凌志浩祁學文
自動化儀表 2012年11期
關鍵詞:資源

張志飛 凌志浩,2 祁學文

(華東理工大學信息科學與工程學院1,上海 200237;化工過程先進控制和優化技術教育部重點實驗室2,上海 200237)

0 引言

隨著泛在網、物聯網技術的高速發展,人們對終端并發訪問Web服務器的需求也與日俱增[1]。由于最初設計的網絡接口卡成本較高等原因,很多終端只具備一個網絡接口卡。因此,只能通過單一接口和單一信道進行訪問和資源下載。多線程編程技術使得終端可以并發下載不同資源,這在一定程度上提高了下載 Web服務器上資源的效率[2]。例如Linux或Windows操作系統可以建立多線程,實現對不同網絡資源的并發下載。但它們都是基于單一信道的,單一信道由于受到帶寬限制,對提高下載資源的效率貢獻有限。

無線網絡的不斷擴展極大地豐富了智能終端的接入方式,如藍牙、WiFi、GPRS、3G/4G 等。目前,智能終端都裝配有多塊無線網絡接口卡,以提供多種可供選擇的無線接入方式,保證了用戶的體驗[3]。

本文采用的ARM11開發平臺擴展了Ethernet接口卡和 WiFi接口卡[4]。而這種具備 Ethernet接口、WiFi接口或者其他接口的多接口(multi-interface,MIF)終端,其各接口之間的通信與協作給多流并發傳輸模型設計和開發帶來了新的挑戰。如何并發利用信道容量拓展實現帶寬聚合成為了理論研究和實際工程應用的關注焦點[5]。

本文針對MIF終端,應用HTTP協議,通過Socket套接字技術,將不同接口與不同地址進行綁定;并應用多線程編程技術,設計多線程工作模式,實現多信道多流并發下載。

1 超文本傳輸HTTP協議

1.1 HTTP 概述

超文本傳輸HTTP協議是面向事務的應用層協議,它是可靠交換網絡文件(包括文檔、圖片、歌曲等各種文件)的重要基礎。當用戶瀏覽網頁、從網站下載文件資源時,瀏覽器和Web服務器之間就會通過HTTP協議在 Internet上進行數據的發送和接收[6]。基于請求/響應模式的HTTP協議,憑借其簡捷、快速、靈活和高效等特點,應用于各種分布式和合作式超媒體信息系統,并可支持多種應用功能的開發[7]。

1.2 HTTP 報文結構

HTTP報文分為請求報文和響應報文兩種。

①請求報文:從終端向服務器發送的報文。

②響應報文:從服務器到終端的響應報文。

請求報文和響應報文的結構如圖1所示。

圖1 請求報文和響應報文結構Fig.1 Structure of the request and response messages

HTTP的請求報文和響應報文均由請求行、首部行和實體主體三個部分組成。

①開始行:主要用于區別請求報文和響應報文;

②首部行:用來說明瀏覽器、服務器或報文主體的一些信息;

③實體主體:在請求報文中一般都不用這個字段,而在響應報文中也可能沒有這個字段。

1.3 HTTP 工作過程

終端訪問Web服務器的過程如圖2所示。

圖2 終端訪問Web服務器過程圖Fig.2 The accessing procedures from terminal to Web server

訪問網絡上的網點要使用HTTP協議。本文使用URL對Web服務器進行訪問,URL的一般形式如下。

http://<主機>:<端口>/<路徑>

當終端需要從服務器下載資源時,其工作過程描述如下。

①終端向Web服務器發出建立連接請求,服務器監聽到連接請求后,作出響應,建立TCP連接;

②終端向Web服務器發出下載某個文件資源的請求,即發出HTTP請求報文;

③服務器對接收到的報文請求給予響應,即發出HTTP響應報文,并向終端傳輸資源;

④釋放TCP連接。

2 Socket原理及多線程技術

2.1 Socket概述

Socket是TCP/IP網絡編程的通用接口,客戶服務器模型是最基本的Socket通信模型,即由客戶端向服務器端發出請求,服務器端執行被請求的任務并將響應結果返回客戶端。客戶端與服務器端交互的過程如圖3所示。

圖3 Socket通信流程圖Fig.3 Flowchart of Socket communication

目前,Socket套接字主要有兩種,即基于TCP協議的流式套接字和基于UDP協議的數據報套接字。TCP協議[8]提供了雙向、有序、無重復的數據流服務。通過流量控制、擁塞控制和差錯重傳等機制,TCP能保證數據的無差錯、無丟失、按次序送達。UDP協議[9]是無連接的傳輸協議,發送數據之前無需進行連接;UDP沒有擁塞控制,只能盡最大努力交付數據報,但不保證數據可靠、有序、無重復的傳輸。

2.2 基本套接字函數

由于TCP是基于客戶端-服務器(CS)結構,所以在終端和服務器的Socket通信不盡相同,除了基本的建立、綁定、讀、寫、關閉操作外,在客戶端還需要調用連接函數,在服務器端需要調用監聽和接受連接請求函數。套接字操作的函數包括以下八種函數。

① socket()函數

int socket(int family,int type,int protocol);建立套接字函數指定了協議族、套接字類型和協議類型。

② bind()函數

int bind(int sockfd,const struct sockaddr*myaddr,socklen_t addrlen);地址綁定函數為套接字實現地址的綁定。

③ listen()函數

int listen(int sockfd,int backlog);監聽函數用于指定請求隊列長度及監聽連接。

④ accept()函數

int accept(int sockfd,const struct sockaddr*cliaddr,socklen_t addrlen);接受連接請求函數在連接請求到來時返回對端地址。

⑤ read()函數

ssize_t read(int sockfd,const void*buf,size_t nbytes);讀取函數將數據從套接字讀取到系統。

⑥ write()函數

ssize_t write(int sockfd,const void*buf,size_t nbytes);寫入函數將系統中的數據寫入套接字。

⑦ connect()函數

int connect(int sockfd,const struct sockaddr*seraddr,socklen_t addrlen);連接請求函數用于向服務器發出連接請求。

⑧ close()函數

int close(int sockfd);關閉套接字函數用于釋放內存空間。

2.3 Socket多線程編程

Socket多線程具有效率高和存儲空間可共享兩個重要優點。基于多線程的并發服務器更適合于大量線程間通信的情況,更有利于設計功能強大的服務器[10]。在同一個進程中可以包含多個線程,這些線程共享內存空間,線程之間的切換所帶來的開銷很小,可以節省大量的CPU時間,從而提高CPU處理效率。本文采用多線程技術,使得與多接口綁定的多信道并發工作;終端通過不同接口綁定的信道訪問Web服務器的資源,并對資源進行下載。本文用到的多線程編程函數如下。

① pthread_create()函數

int pthread_create(pthread_t*thread,pthread_attr_t*attr,void*(*start_routine)(void*),void*arg);其中,thread參數為線程標志符;attr參數為線程屬性設置;start_routine參數為線程函數起始地址;arg參數為傳遞給start_routine的參數。

② pthread_join()函數

int pthread_join(pthread_t*th,void**thread_return);其中,th參數為等待線程的標志符;thread_return參數為用戶定義指針,用來存儲被等待線程的返回值。

③ ptread_exit()函數

int ptread_exit(void*retval);其中,retval參數為ptread_exit調用者線程的返回值,可由其他函數和pthread_join來檢查獲取。

3 多流并發下載的實現

3.1 硬件實現

在終端控制機制中,泛在網、物聯網經常需要終端并發訪問不同Web服務器,并對Web服務器上的資源文件進行并發下載。傳統的HTTP下載都是基于單信道的,而隨著MIF終端的不斷普及,它為開發多信道并發下載提供了硬件上的支持。本文設計的終端具備Ethernet和 WiFi兩個接口(如 ARM11開發平臺),Ethernet接口通過網線連接到路由器,WiFi接口通過WiFi網卡接入路由器,路由器可以訪問Internet網絡。假設需要下載的資源文件分別存放在服務器A(IP:123.125.115.160)和服務器 B(IP:101.4.60.74),并通過軟件編程并發地從服務器A上下載zip文件,從服務器B上下載mp3文件。

3.2 軟件設計

通過軟件編程,終端建立線程1,將Ethernet接口與服務器A的信道綁定,訪問服務器A,并下載服務器A上的zip文件;終端建立線程2,將WiFi接口與服務器B的信道綁定,訪問服務器B,并下載服務器B上的mp3文件。軟件流程具體實現過程如下。

①在主函數main()函數中調用thread_create()函數,創建線程;

②thread_create()函數主體中調用pthread_create()函數,通過 pthread_create(&thread[0],NULL,thread1,NULL) 和 pthread_create(&thread[0],NULL,thread2,NULL)創建兩個線程thread1和thread2;

③ 在線程1函數thread1()中,訪問服務器A,下載服務器A上的zip文件;

④ 在線程2函數thread2()中,訪問服務器B,下載服務器B上的mp3文件;

⑤調用thread_wait()函數,在函數主體中調用pthread_join(thread[0],NULL)和 pthread_join(thread[1],NULL),等待兩個線程結束;

⑥兩個線程結束后,退出主函數。

訪問服務器和下載過程可以具體描述為如下幾個步驟。

①建立Ethernet/WiFi接口套接字,并初始化;

②將Ethernet/WiFi接口地址與套接字通過bind()函數綁定;

③調用connect()函數,Ethernet/WiFi接口套接字向服務器A/B的套接字發出連接請求;

④服務器A/B對該請求作出響應,向終端傳輸其所請求的資源;

⑤終端通過Ethernet/WiFi接口,接收來自服務器A/B的資源文件;

⑥接收完成后,關閉套接字。

軟件流程如圖4所示。

圖4 軟件流程圖Fig.4 Flowchart of software

3.3 運行結果

調試程序無誤后,按如下步驟運行。

①在超級終端輸入命令gcc httpload.c-o httploadlpthread,編譯 httpload.c;

② 在超級終端輸入./httpload,運行httpload。

由運行結果可知,終端通過Ethernet接口和WiFi接口并發訪問Web服務器。Ethernet接口綁定的是到服務器A的信道,并對服務器 A上的資源ludashisetup.zip發出HTTP下載請求。WiFi接口綁定的是到服務器 B的信道,并對服務器B上的資源5968339.mp3發出HTTP下載請求。兩者通過開啟兩個線程并發工作。終端通過Ethernet接口和WiFi接口并發接收來自服務器A和服務器B的資源文件,資源完成下載后給出完成信息。信息包括了下載的資源名以及資源所在服務器的IP地址。從而進一步提高網絡資源的利用率。

ARM11應用開發平臺搭載的Linux操作系統測試表明,MIF多接口終端能有效實現多路并發訪問Web服務器和多流并發下載功能,具有可移植性強的特性和較高的應用價值。

4 結束語

本文通過綜合運用Socket套接字技術、多線程編程技術以及HTTP協議,實現了支持HTTP多信道多流并發下載的MIF多接口終端的設計,滿足了泛在網、物聯網對終端快速訪問的技術需求。借助多接口終端能充分利用不同網絡信道實現多流并發下載的優勢,

[1]朱洪波,楊龍祥,朱琦.物聯網技術進展與應用[J].南京郵電大學學報:自然科學版,2011,31(1):1 -9.

[2]周學威,閆鑫,趙櫸云,等.基于SOCKET的多線程下載工具的開發[J].電子測試,2011(8):104 -106.

[3]張平,苗杰,胡錚,等.泛在網絡研究綜述[J].北京郵電大學學報:自然科學版,2010,35(5):1 -6.

[4]董玉明.基于ARM11的移動互聯設備硬件設計與實現[D].西安:西安電子科技大學,2010.

[5]吳曉丹.CMT中流與路徑映射機制的研究[J].福建電腦,2010,26(2):77 -78.

[6]李晶媛,韓慧蓮.基于HTTP協議的多線程下載工具的實現[J].電腦開發與應用,2009,22(10):52 -54.

[7]徐塞虹.路由器中基于HTTP協議的應用開發[D].北京:北京郵電大學,2008.

[8]Postel J.RFC793 Transmission Control Protocol[S].1981.

[9]Postel J.RFC768 User Datagram Protocol[S].1980.

[10]周麗,焦程波,蘭巨.LINUX系統下多線程與多進程性能分析[J].微計算機信息,2005,21(9):118 -120.

猜你喜歡
資源
讓有限的“資源”更有效
污水磷資源回收
基礎教育資源展示
崛起·一場青銅資源掠奪戰
藝術品鑒(2020年7期)2020-09-11 08:04:44
一樣的資源,不一樣的收獲
我給資源分分類
資源回收
做好綠色資源保護和開發
當代貴州(2018年28期)2018-09-19 06:39:04
資源再生 歡迎訂閱
資源再生(2017年3期)2017-06-01 12:20:59
激活村莊內部治理資源
決策(2015年9期)2015-09-10 07:22:44
主站蜘蛛池模板: 亚洲免费毛片| 国产一区二区三区在线观看免费| 97综合久久| 欧美日韩中文国产| 四虎永久免费地址| 亚洲天堂网在线观看视频| 精品人妻一区无码视频| 91成人免费观看| 亚洲无码精品在线播放| 国产清纯在线一区二区WWW| 国产在线拍偷自揄拍精品| 亚洲水蜜桃久久综合网站| 91青草视频| 成人午夜精品一级毛片| 全部无卡免费的毛片在线看| 国产伦精品一区二区三区视频优播| 波多野结衣中文字幕一区二区| 亚洲一区国色天香| 夜夜操天天摸| 亚洲国产理论片在线播放| 久久综合AV免费观看| 日本91在线| 亚洲Aⅴ无码专区在线观看q| 91九色国产porny| 国产精品99一区不卡| 日韩av高清无码一区二区三区| 精品人妻无码中字系列| 26uuu国产精品视频| 亚洲欧美日韩精品专区| 亚洲经典在线中文字幕| 免费高清毛片| 国产精品国产主播在线观看| 国产国产人成免费视频77777| 久久精品欧美一区二区| 高潮毛片免费观看| 久久黄色毛片| 国产无码网站在线观看| 免费在线成人网| 亚洲第一色视频| 四虎综合网| 亚洲精品无码不卡在线播放| 免费又爽又刺激高潮网址| 成人毛片在线播放| 婷婷色狠狠干| 久久久久无码精品| 在线另类稀缺国产呦| 最新国语自产精品视频在| 成年午夜精品久久精品| 亚洲人成网址| 一级爱做片免费观看久久| 高清无码一本到东京热| 亚洲日韩AV无码一区二区三区人| 伊人久久精品无码麻豆精品| 国产一区成人| 在线观看av永久| 国产美女免费| 欧美区一区| 久久久久免费精品国产| 视频一本大道香蕉久在线播放| 污视频日本| 亚洲天堂网站在线| 操国产美女| 国产玖玖玖精品视频| 日韩欧美在线观看| 国产美女精品一区二区| 亚洲第一视频网| 91网址在线播放| 99re视频在线| 免费毛片网站在线观看| 在线日韩日本国产亚洲| 青青国产成人免费精品视频| 综合色天天| 亚洲欧美日韩另类在线一| 国产成人无码综合亚洲日韩不卡| 日韩无码黄色| 亚洲最大看欧美片网站地址| 国内精品视频在线| 青青草国产在线视频| 激情综合网激情综合| 国产微拍一区二区三区四区| 中文精品久久久久国产网址 | 国产在线日本|