《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于Linux的Socket網絡編程的性能優化
基于Linux的Socket網絡編程的性能優化
摘要: 隨著Intenet的日益發展和普及,網絡在嵌入式系統中應用非常廣泛,越來越多的嵌入式設備采用Linux操作系統。Linux是一個源代碼公開的免費操作系統,具有強移植性,所以對基于Linux的Socket網絡編程的研究越來越重要。
Abstract:
Key words :

  1 引言

  隨著Intenet的日益發展和普及,網絡在嵌入式系統中應用非常廣泛,越來越多的嵌入式設備采用Linux操作系統。Linux是一個源代碼公開的免費操作系統,具有強移植性,所以對基于Linux的Socket網絡編程的研究越來越重要。

客戶端/服務端模式

  Socket實際是網絡傳輸層供給應用層的編程接口。傳輸層則在網絡層的基礎上提供進程到進程問的邏輯通道,而應用層的進程則利用傳輸層向另一臺主機的某一進程通信。Socket就是應用層與傳輸層之間的橋梁。如圖2所示。

Socket就是應用層與傳輸層之間的橋梁

  使用Socket編程時可以開發客戶機和服務器應用程序,它們可以在本地網絡上進行通信,也可以通過Internet在全球范圍內進行通信。編寫并運行 Socket的客戶端和服務器端程序,雙方通過套接字建立了服務連接請求,并且通過一些方法提高Socket的性能。

  2 Socket編程

  2.1 Socket類型

  常見的Socket有3種類型:

  (1)流式Socket(SOCK_STREAM)它提供可靠的通信流,使用面向連接的TCP協議,從而保證數據傳輸的正確性和順序性:

  (2)數據報Socket(SOCK_DGRAM)數據通過相互獨立的報文進行傳輸,是無序的,并且不保證可靠,無差錯,它定義一種面向無連接的服務,使用數據報協議UDP;

  (3)原始Socket(SOCK_RAM)它允許直接訪問底層協議,功能強大但使用較為不便,主要用于一些協議的開發。本編寫的Socket屬于流式Socket。

  2.2 Socket編程流程

  Socket編程采用客戶/服務器模式。因此編程分為服務器端和客戶端兩部分。

  每一個Socket都用一個半相關描述(協議,本地地址,本地端口)來表示,Socket也有一個類似于文件打開的函數,該函數返回一個整型的Socket描述符,隨后建立連接,數據傳輸等操作都通過Socket來實現。

  編程流程如下:服務器端首先建立Socket,返回該Socket的描述符:配置Socket的端口和IP地址;建立監聽甬數,檢測是否有客戶端向服務器發送請求,若有則接收該請求,將其放到接收隊列中:從接收隊列中接受一個請求;并向客戶端發送確認連接信息。

  客戶端建立一個Socket,返回該Socket的描述符;配置Socket端口和IP地址;向服務器發送連接請求,并接收服務器發回的確認連接信息。雙方通信結束后,關閉其Socket。進行Socket編程的基本函數有socket(),bind(),listen(),accept(), connect(),send(),recv(),close()。圖3為Socket的編程流程圖。

Socket的編程流程圖

  2.3 程序的編譯和運行結果

  (1)在Linux的VI編輯器下編寫服務器端程序serv.c和客戶端程序clt.c。運用交叉編譯工具arm-linux-gcc,執行編譯指令生成可執行文件。

  其指令為:

  #gcc serv.c=0 serv

  #gcc clt.c-0 clt

  編譯沒有錯誤則會生成可執行文件serv和clt。

  (2)配置服務器和客戶端的IP,保證網絡暢通,在serv.c中已將服務器的IP設置為:192.168.2.111。在客戶端的“網絡設置”中設置IP為:192.168.2.22,可以通過ping命令檢測網絡是否暢通。

  (3)在一臺計算機的終端先運行服務器程序(./serv),再在客戶端的計算機終端上運行客戶端程序(./clt 192.:168.2.1l 1)就會看到結果(Hello,Wang Lei!You are connected!);運行結果如圖4和圖5所示。如果未運行服務器程序而先運行客戶端程序將立即提示“Connect:Connection refused”。

運行結果

  3 Socket的性能優化

  3.1 解決多路復用

  上面的運行過程僅實現了一個客戶端接人,在實際情況中,人們往往遇到多個客戶端連接服務器端的情況。由于connect(),recv(),send() 都是阻塞性函數,若資源沒有準備好,則調用該甬數的進程將進入睡眠狀態,無法處理I/O多路復用。在服務器端的serv.c中加入select()函數,它可同時監聽多個套接字,實現I/O的多路復用。

  其函數原型如下:

  該函數監視一系列文件描述符,特別是readfds、writefds和exceptfds。如果想知道是否能從標準輸入和套接字描述符sockfd讀入數據,只要將文件描述符“0”和“sockfd”加入集合readfds中。參數numfds應等于最高文件描述符的值加1,設置該值為sockfd+ 1。因為它一定大于標準輸入的文件描述符“0”。當函數select()返回時,readfds的值修改為反映選擇的哪個文件描述符可讀。重新編譯和運行客戶端的程序后,服務器端允許多個客戶端接入,服務器端運行結果如圖6所示。

 

服務器端運行結果

  3.2 最小化報文傳輸的延時

  通過TCP socket進行通信時,數據都被拆分成數據塊,這樣它們就可以封裝到給定連接的TCP payload(指TCP數據包中的有效負荷)中。TCP payload的大小取決于幾個因素(如最大報文長度和路徑),為了達到較好的性能,應使用盡可能多的可用數據來填充每個報文。當沒有足夠的數據來填充 payload時(也稱為最大報文段長度maximum segment size或MSS),TCP將采用Nagle算法自動將一些小緩沖區連接到一個報文段中。這樣可以通過最小化所發送的報文的數量來提高應用程序的效率,并減輕整體的網絡擁塞。

  由于這種算法對數據進行合并,試圖構成一個完整的TCP報文段,因此會引入一些延時。Socket網絡傳輸很長時間只發送一些較小的報文,比如 telnet程序,它讓用戶可以與遠程系統進行交互,通常通過一個shell來進行,如果用戶被要求用發送報文之前輸入的字符來填充某個報文段,該方法絕對不能滿足需要。再比如HTTP協議,通常客戶機瀏覽器會產生一個小請求(一條HTTP請求消息),然后Web服務器就會返回一個更大的響應(Web頁面)。最小化傳輸延時是首要的。在這種情況中,Socket可以提供一種解決方案,即禁用Nagle算法,可設置TCP_NODELAY socket選項TCP socket禁用Nagle算法。

程序

  使用Samba的實驗表明,在服務器上的Samba驅動器上讀取數據時,禁用Nagle算法幾乎可以加倍提高讀性能。

  3.3 為Bandwidth Delay Product調節TCP窗口

  TCP的性能取決于幾方面因素,最重要的是鏈接帶寬(link bandwidth)(報文在網絡上傳輸的速率)和往返時間(round-trip time)或RTT(發送報文與接收到另一端的響應之間的延時)。這兩個值確定稱為BDP(Bandwidth Delay Prod-uct)的內容。BDP給出一種簡單的方法計算理論上最優的TCP Socket緩沖區大小(其中保存排隊等待傳輸和等待應用程序接收的數據)。緩沖區太小,TCP窗口就不能完全打開,這會限制性能;緩沖區太大,則會浪費寶貴的內存資源;設置的緩沖區大小合適,就可完全利用可用帶寬。

  BDP計算公式:

BDP=link bandwidth×RTT

  若應用程序通過一個100MB/s的局域網通信,其RRT為500ms,則BDP為:50MB/sx0.050/ 8625M=625KB。Linux2.6默認的TCP窗口大小是110KB,這將連接的帶寬限制為22M/S,計算方法如下:

throughput=window_size/RTT

110 KB/0.050=2.2 MB/s

  使用上面計算的窗口大小,得到帶寬為12.5 MB/s,即:

625 KB/0 050=12.5 MB/s

  差別很大,并且可以為Socket提供更大的吞吐量??梢愿鶕约旱腟ocket計算最優的緩沖區大小。Socket提供幾個Socket選項,其中兩個可以用于修改Socket的發送和接收緩沖區的大小。使用SO_SNDBUF和SO_RCVBUF選項來調整發送和接收緩沖區的大小。

程序

  在Linux 2.6內核中.發送緩沖區的大小由調用用戶定義,而接收緩沖區會自動加倍。通過計算合理設置緩沖區的大小,Socket網絡傳輸帶寬的資源將得到充分利用,從而提高了傳輸性能。

  4 結束語

  設計和實現一個基于Linux的Socket網絡編程,通過在服務器端運行預先編譯的可執行文件serv,和在客戶端運行預先編譯的可執行文件clt,服務器端和客戶端建立通信連接。加入select()函數以后,服務器端可以允許多個客戶端接入服務器端,解決了I/O多路復用問題,更加接近實際應用。利用TCP socket禁用Nagle算法實現了最小化報文傳輸的延時,提高了Socket的性能。在網絡帶寬非常珍貴的現實中。提出了為Bandwidth Delay Product調節TCP窗口,修改socket的發送和接收緩沖區的大小,完全利用可用的帶寬。達到較好的網絡傳輸效果。實際網絡傳輸環境復雜多變,如何達到最理想的網絡傳輸,還需進一步的分析和研究。

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美1区2区3区| 亚洲欧美日韩国产一区二区三区| 欧美日韩人人澡狠狠躁视频| 国产色婷婷国产综合在线理论片a| 亚洲精品一区在线观看| 亚洲裸体视频| 韩日欧美一区二区三区| 免费成人毛片| 国产精品欧美日韩久久| 韩国av一区| 欧美在线播放高清精品| 亚洲综合好骚| 亚洲精品国产系列| 欧美激情中文不卡| 国内精品久久久久影院优| 欧美激情在线狂野欧美精品| 久久九九国产精品怡红院| 亚洲一级特黄| 欧美精品在线一区二区三区| …久久精品99久久香蕉国产| 欧美日韩中文字幕日韩欧美| 伊人精品在线| 亚洲视频免费在线| 99伊人成综合| 香蕉久久夜色精品国产| 国语自产偷拍精品视频偷| 在线欧美日韩国产| 亚洲大胆av| 国产精品欧美日韩一区| 欧美日韩综合网| 国产精品网站在线| 国语对白精品一区二区| 国产精品magnet| 国产精品一区二区三区成人| 国产日韩欧美一区| 亚洲电影在线播放| 一区二区免费看| 欧美乱妇高清无乱码| 香蕉尹人综合在线观看| 国产综合色精品一区二区三区| 国际精品欧美精品| 在线观看日韩专区| 欧美视频1区| 蜜臀久久久99精品久久久久久| 中文在线资源观看网站视频免费不卡| 欧美亚洲成人免费| 午夜精品久久久久久久白皮肤| 欧美日韩免费高清| 欧美影院成年免费版| 久久精品一区蜜桃臀影院| 亚洲人体大胆视频| 欧美亚洲自偷自偷| 99精品欧美一区二区蜜桃免费| 亚洲精品乱码视频| 亚洲理伦在线| 欧美高清你懂得| 亚洲激情影视| 亚洲国产欧美一区二区三区同亚洲| 国产亚洲一区二区精品| av成人老司机| 欧美在线免费| 国产色产综合色产在线视频| 久久天堂av综合合色| 欧美日韩亚洲在线| 激情成人在线视频| 欧美一区激情| 亚洲午夜影视影院在线观看| 亚洲欧美日韩中文视频| 亚洲视频高清| 国产在线乱码一区二区三区| 国产精品亚洲аv天堂网| 欧美 日韩 国产在线| 亚洲一区影音先锋| 最新国产成人av网站网址麻豆| 国产精品网站一区| 国产精品入口日韩视频大尺度| 国内精品伊人久久久久av影院| 久久综合九九| 在线观看福利一区| 国产精品久久久久久一区二区三区| 欧美福利专区| 久久久久久久999精品视频| 国产精品国产三级国产专播精品人| 在线观看一区欧美| 在线成人激情视频| 欧美一区二区三区视频免费| 亚洲精品乱码久久久久久按摩观| 久久精品视频亚洲| 欧美激情 亚洲a∨综合| 亚洲视频免费观看| 午夜亚洲福利在线老司机| 国产精品高潮久久| 久久伊人免费视频| 亚洲国产精品久久久久婷婷老年| 久热爱精品视频线路一| 国产精品a久久久久| 国产精品一区二区三区久久久| 香蕉成人伊视频在线观看| 性亚洲最疯狂xxxx高清| 欧美在线啊v| 国产精品一区二区视频| 亚洲人成在线播放网站岛国| 亚洲一区二区三区在线| 午夜精品区一区二区三| 欧美新色视频| 91久久亚洲| 国产精品av免费在线观看| 亚洲国产精品综合| 亚洲欧美电影院| 亚洲福利免费| 欧美日韩高清在线一区| 国产精品夜夜夜一区二区三区尤| 91久久久在线| 亚洲二区精品| 亚洲精选成人| 欧美激情精品| 欧美国产日本高清在线| 欧美福利电影在线观看| 欧美日韩成人精品| 欧美日韩国产综合久久| 精品电影一区| 欧美视频一区二区三区…| 一区二区三区在线免费视频| 国产日韩欧美一二三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 一区二区欧美亚洲| 一本久久a久久免费精品不卡| 亚洲一区二区精品在线观看| 一色屋精品视频免费看| 欧美亚洲免费高清在线观看| 日韩视频亚洲视频| 国产欧美另类| 亚洲精品乱码视频| 亚洲永久免费视频| 午夜精品久久久久| 国产精品99久久久久久久女警| 国产在线不卡视频| 黄色国产精品一区二区三区| 亚洲精品影院在线观看| 性xx色xx综合久久久xx| 免费中文字幕日韩欧美| 欧美激情精品久久久久久黑人| 在线日本高清免费不卡| 久久免费视频网| 欧美激情一区二区三区在线视频| 欧美成人免费观看| 欧美一区二区三区免费大片| 夜夜嗨av一区二区三区网站四季av| 久久性天堂网| 国产精品视频yy9299一区| 国产精品色一区二区三区| 欧美午夜一区二区三区免费大片| 一区二区三区视频免费在线观看| 国产精品爽爽爽| 男女av一区三区二区色多| 亚洲尤物视频网| 欧美激情视频给我| 欧美丰满高潮xxxx喷水动漫| 欧美激情网友自拍| 久久国产精品亚洲va麻豆| 国产精品毛片高清在线完整版| 亚洲影视中文字幕| 久久亚洲精品伦理| 激情另类综合| 欧美大尺度在线观看| 欧美色区777第一页| 国产伪娘ts一区| 亚洲视频在线观看| 久久久之久亚州精品露出| 亚洲欧洲精品成人久久奇米网| 亚洲视频在线观看三级| 欧美一区永久视频免费观看| 亚洲精品国产系列| 在线精品视频免费观看| 欧美日韩另类字幕中文| 国产情人节一区| 国产精品国产馆在线真实露脸| 伊人天天综合| 久久九九精品99国产精品| 久久久久久亚洲精品中文字幕| 欧美成年人在线观看| 欧美欧美在线| 欧美婷婷六月丁香综合色| 久久久久网站| 欧美一区二区视频网站| 久久国产精品亚洲va麻豆| 免费欧美在线| 在线成人免费观看| 中日韩在线视频| 欧美大胆人体视频| 亚洲国产天堂网精品网站| 欧美四级在线| 亚洲国产va精品久久久不卡综合| av不卡在线| 另类亚洲自拍| 亚洲精品一级| 久久精品夜色噜噜亚洲a∨| 欧美大片va欧美在线播放| 免费欧美高清视频| 欧美中在线观看| 国产精品人人爽人人做我的可爱| 久热国产精品| 国产精品乱子久久久久| 久久久精品视频成人| 在线精品视频一区二区| 一色屋精品视频免费看| 亚洲精品一二三区| 国产精品永久免费| 嫩草伊人久久精品少妇av杨幂| 久久久人成影片一区二区三区观看| 噜噜噜躁狠狠躁狠狠精品视频| 国产精品一区久久| 亚洲国产一二三| 日韩亚洲欧美高清| 国产丝袜一区二区| 日韩亚洲欧美综合| 国产精品theporn| 欧美激情一区二区三区蜜桃视频| 久久国产精品一区二区三区四区| 亚洲在线观看| 一个人看的www久久| 欧美一区二区视频在线观看2020| 亚洲一区二区精品在线观看| 国模叶桐国产精品一区| 亚洲欧美一区二区三区极速播放| 亚洲人成毛片在线播放| 国产最新精品精品你懂的| 欧美一区二区在线视频| 亚洲国产天堂网精品网站| 国产一区二区0| 国产一区视频网站| 国精产品99永久一区一区| 精品动漫一区二区| 黄色一区二区三区| 亚洲一区二区在线播放| 国语对白精品一区二区| 亚洲国产一区二区三区a毛片| 欧美三区美女| 依依成人综合视频| 国产有码在线一区二区视频| 亚洲人体影院| 狠狠色丁香婷婷综合影院| 欧美一级视频免费在线观看| 一本色道综合亚洲| 一区免费观看视频| 国产手机视频精品| 夜夜嗨av一区二区三区免费区| 美女诱惑黄网站一区| 亚洲国产小视频在线观看| 一区二区三区在线不卡| 亚洲乱码精品一二三四区日韩在线| 在线中文字幕不卡| 亚洲综合色在线| 欧美日韩一区三区| 久久综合国产精品台湾中文娱乐网| 亚洲激情在线视频| 久久精品欧美日韩| 亚洲第一精品夜夜躁人人爽| 欧美高清视频在线播放| 国产女主播一区二区三区| 欧美午夜一区二区| 欧美在线视频观看免费网站| 艳妇臀荡乳欲伦亚洲一区| 亚洲国产一二三| 在线观看欧美日本| 国产亚洲在线观看| 一本色道久久综合亚洲精品小说| 国产欧美日韩视频一区二区| 欧美日韩精品一区| 欧美精品福利| 国产精品av久久久久久麻豆网| 国产精品网站在线| 欧美韩国日本综合| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲欧美偷拍卡通变态| 久久精品视频导航| 欧美日韩精品免费观看视一区二区| 韩国一区二区三区美女美女秀| 国产亚洲精品一区二555| 国产精品综合| 欧美视频一区二区| 99精品国产热久久91蜜凸| 亚洲每日在线| 亚洲精品国产精品国自产在线| 欧美高清视频在线观看| 欧美不卡福利| 好看的日韩av电影| 欧美性猛交xxxx免费看久久久| 美玉足脚交一区二区三区图片| 亚洲第一在线综合网站| 久久亚洲精品视频| 亚洲国产二区| 国产精品亚洲综合久久| 国产综合第一页| 黄色一区二区在线| 久久成人免费日本黄色| 亚洲综合电影一区二区三区| 亚洲欧洲日本一区二区三区| 久久精品夜色噜噜亚洲a∨| 国产精品你懂的在线| 欧美大片一区二区三区| 狠狠色丁香久久婷婷综合丁香| 伊人久久噜噜噜躁狠狠躁| 91久久精品www人人做人人爽| 亚洲人被黑人高潮完整版| 欧美一级日韩一级| 亚洲成色999久久网站| 欧美电影免费观看高清| 亚洲人成毛片在线播放女女| 国产精品日韩欧美一区| 一级日韩一区在线观看| 欧美午夜a级限制福利片| 亚洲国产婷婷香蕉久久久久久| 中文国产成人精品| 亚洲第一黄色| 激情综合五月天| 你懂的成人av| 欧美视频在线一区| 欧美精品91| 在线天堂一区av电影| 国产夜色精品一区二区av| 欧美大片在线看| 国产一区二区三区在线观看免费视频| 欧美屁股在线| 午夜精品久久久久久久白皮肤| 国产精品毛片在线看| 国产精品一区二区三区四区五区| 野花国产精品入口|