日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀]1 引言 隨著Intenet的日益發(fā)展和普及,網(wǎng)絡(luò)在嵌入式系統(tǒng)中應(yīng)用非常廣泛,越來越多的嵌入式設(shè)備采用Linux操作系統(tǒng)。Linux是一個源代碼公開的免費操作系統(tǒng),具有強移植性,所以對基于Linux的Socket網(wǎng)絡(luò)編程的研究

1 引言
    隨著Intenet的日益發(fā)展和普及,網(wǎng)絡(luò)在嵌入式系統(tǒng)中應(yīng)用非常廣泛,越來越多的嵌入式設(shè)備采用Linux操作系統(tǒng)。Linux是一個源代碼公開的免費操作系統(tǒng),具有強移植性,所以對基于Linux的Socket網(wǎng)絡(luò)編程的研究越來越重要。

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

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

3 Socket編程
3.1 Socket類型
    常見的Socket有3種類型:
    (1)流式Socket(SOCK_STREAM)它提供可靠的通信流,使用面向連接的TCP協(xié)議,從而保證數(shù)據(jù)傳輸?shù)恼_性和順序性:
    (2)數(shù)據(jù)報Socket(SOCK_DGRAM)數(shù)據(jù)通過相互獨立的報文進行傳輸,是無序的,并且不保證可靠,無差錯,它定義一種面向無連接的服務(wù),使用數(shù)據(jù)報協(xié)議UDP;
    (3)原始Socket(SOCK_RAM)它允許直接訪問底層協(xié)議,功能強大但使用較為不便,主要用于一些協(xié)議的開發(fā)。本編寫的Socket屬于流式Socket。


3.2 Socket編程流程
    Socket編程采用客戶/服務(wù)器模式。因此編程分為服務(wù)器端和客戶端兩部分。
    每一個Socket都用一個半相關(guān)描述(協(xié)議,本地地址,本地端口)來表示,Socket也有一個類似于文件打開的函數(shù),該函數(shù)返回一個整型的Socket描述符,隨后建立連接,數(shù)據(jù)傳輸?shù)炔僮鞫纪ㄟ^Socket來實現(xiàn)。
    編程流程如下:服務(wù)器端首先建立Socket,返回該Socket的描述符:配置Socket的端口和IP地址;建立監(jiān)聽甬?dāng)?shù),檢測是否有客戶端向服務(wù)器發(fā)送請求,若有則接收該請求,將其放到接收隊列中:從接收隊列中接受一個請求;并向客戶端發(fā)送確認(rèn)連接信息。
    客戶端建立一個Socket,返回該Socket的描述符;配置Socket端口和IP地址;向服務(wù)器發(fā)送連接請求,并接收服務(wù)器發(fā)回的確認(rèn)連接信息。雙方通信結(jié)束后,關(guān)閉其Socket。進行Socket編程的基本函數(shù)有socket(),bind(),listen(),accept(), connect(),send(),recv(),close()。圖3為Socket的編程流程圖。

3.3 程序的編譯和運行結(jié)果
    (1)在Linux的VI編輯器下編寫服務(wù)器端程序serv.c和客戶端程序clt.c。運用交叉編譯工具arm-linux-gcc,執(zhí)行編譯指令生成可執(zhí)行文件。
    其指令為:
    #gcc serv.c=0 serv
    #gcc clt.c-0 clt
    編譯沒有錯誤則會生成可執(zhí)行文件serv和clt。
    (2)配置服務(wù)器和客戶端的IP,保證網(wǎng)絡(luò)暢通,在serv.c中已將服務(wù)器的IP設(shè)置為:192.168.2.111。在客戶端的“網(wǎng)絡(luò)設(shè)置”中設(shè)置IP為:192.168.2.22,可以通過ping命令檢測網(wǎng)絡(luò)是否暢通。
    (3)在一臺計算機的終端先運行服務(wù)器程序(./serv),再在客戶端的計算機終端上運行客戶端程序(./clt 192.:168.2.1l 1)就會看到結(jié)果(Hello,Wang Lei!You are connected!);運行結(jié)果如圖4和圖5所示。如果未運行服務(wù)器程序而先運行客戶端程序?qū)⒘⒓刺崾尽癈onnect:Connection refused”。


4 SOCket的性能優(yōu)化
4.1 解決多路復(fù)用
    上面的運行過程僅實現(xiàn)了一個客戶端接人,在實際情況中,人們往往遇到多個客戶端連接服務(wù)器端的情況。由于connect(),recv(),send() 都是阻塞性函數(shù),若資源沒有準(zhǔn)備好,則調(diào)用該甬?dāng)?shù)的進程將進入睡眠狀態(tài),無法處理I/O多路復(fù)用。在服務(wù)器端的serv.c中加入select()函數(shù),它可同時監(jiān)聽多個套接字,實現(xiàn)I/O的多路復(fù)用。
    其函數(shù)原型如下:
  

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

4.2 最小化報文傳輸?shù)难訒r
    通過TCP socket進行通信時,數(shù)據(jù)都被拆分成數(shù)據(jù)塊,這樣它們就可以封裝到給定連接的TCP payload(指TCP數(shù)據(jù)包中的有效負(fù)荷)中。TCP payload的大小取決于幾個因素(如最大報文長度和路徑),為了達到較好的性能,應(yīng)使用盡可能多的可用數(shù)據(jù)來填充每個報文。當(dāng)沒有足夠的數(shù)據(jù)來填充 payload時(也稱為最大報文段長度maximum segment size或MSS),TCP將采用Nagle算法自動將一些小緩沖區(qū)連接到一個報文段中。這樣可以通過最小化所發(fā)送的報文的數(shù)量來提高應(yīng)用程序的效率,并減輕整體的網(wǎng)絡(luò)擁塞。
    由于這種算法對數(shù)據(jù)進行合并,試圖構(gòu)成一個完整的TCP報文段,因此會引入一些延時。Socket網(wǎng)絡(luò)傳輸很長時間只發(fā)送一些較小的報文,比如 telnet程序,它讓用戶可以與遠程系統(tǒng)進行交互,通常通過一個shell來進行,如果用戶被要求用發(fā)送報文之前輸入的字符來填充某個報文段,該方法絕對不能滿足需要。再比如HTTP協(xié)議,通??蛻魴C瀏覽器會產(chǎn)生一個小請求(一條HTTP請求消息),然后Web服務(wù)器就會返回一個更大的響應(yīng)(Web頁面)。最小化傳輸延時是首要的。在這種情況中,Socket可以提供一種解決方案,即禁用Nagle算法,可設(shè)置TCP_NODELAY socket選項TCP socket禁用Nagle算法。

  
    使用Samba的實驗表明,在服務(wù)器上的Samba驅(qū)動器上讀取數(shù)據(jù)時,禁用Nagle算法幾乎可以加倍提高讀性能。
4.3 為Bandwidth Delay Product調(diào)節(jié)TCP窗口
    TCP的性能取決于幾方面因素,最重要的是鏈接帶寬(link bandwidth)(報文在網(wǎng)絡(luò)上傳輸?shù)乃俾?和往返時間(round-trip time)或RTT(發(fā)送報文與接收到另一端的響應(yīng)之間的延時)。這兩個值確定稱為BDP(Bandwidth Delay Prod-uct)的內(nèi)容。BDP給出一種簡單的方法計算理論上最優(yōu)的TCP Socket緩沖區(qū)大小(其中保存排隊等待傳輸和等待應(yīng)用程序接收的數(shù)據(jù))。緩沖區(qū)太小,TCP窗口就不能完全打開,這會限制性能;緩沖區(qū)太大,則會浪費寶貴的內(nèi)存資源;設(shè)置的緩沖區(qū)大小合適,就可完全利用可用帶寬。
    BDP計算公式:
    BDP=link bandwidth×RTT
    若應(yīng)用程序通過一個100MB/s的局域網(wǎng)通信,其RRT為500ms,則BDP為:50MB/sx0.050/ 8625M=625KB。Linux2.6默認(rèn)的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提供更大的吞吐量??梢愿鶕?jù)自己的Socket計算最優(yōu)的緩沖區(qū)大小。Socket提供幾個Socket選項,其中兩個可以用于修改Socket的發(fā)送和接收緩沖區(qū)的大小。使用SO_SNDBUF和SO_RCVBUF選項來調(diào)整發(fā)送和接收緩沖區(qū)的大小。

  
    在Linux 2.6內(nèi)核中.發(fā)送緩沖區(qū)的大小由調(diào)用用戶定義,而接收緩沖區(qū)會自動加倍。通過計算合理設(shè)置緩沖區(qū)的大小,Socket網(wǎng)絡(luò)傳輸帶寬的資源將得到充分利用,從而提高了傳輸性能。

5 結(jié)束語
    設(shè)計和實現(xiàn)一個基于Linux的Socket網(wǎng)絡(luò)編程,通過在服務(wù)器端運行預(yù)先編譯的可執(zhí)行文件serv,和在客戶端運行預(yù)先編譯的可執(zhí)行文件clt,服務(wù)器端和客戶端建立通信連接。加入select()函數(shù)以后,服務(wù)器端可以允許多個客戶端接入服務(wù)器端,解決了I/O多路復(fù)用問題,更加接近實際應(yīng)用。利用TCP socket禁用Nagle算法實現(xiàn)了最小化報文傳輸?shù)难訒r,提高了Socket的性能。在網(wǎng)絡(luò)帶寬非常珍貴的現(xiàn)實中。提出了為Bandwidth Delay Product調(diào)節(jié)TCP窗口,修改socket的發(fā)送和接收緩沖區(qū)的大小,完全利用可用的帶寬。達到較好的網(wǎng)絡(luò)傳輸效果。實際網(wǎng)絡(luò)傳輸環(huán)境復(fù)雜多變,如何達到最理想的網(wǎng)絡(luò)傳輸,還需進一步的分析和研究。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

美國紐約州阿蒙克2022年10月20日 /美通社/ -- IBM(NYSE: IBM)發(fā)布 2022 年第三季度業(yè)績報告。 IBM 董事長兼首席執(zhí)行官 Arvind Kri...

關(guān)鍵字: IBM 軟件 BSP 云平臺

成都2022年10月19日 /美通社/ -- 近期,平安養(yǎng)老險積極籌備個人養(yǎng)老金的產(chǎn)品設(shè)計和系統(tǒng)開發(fā)工作,發(fā)展多樣化的養(yǎng)老金融產(chǎn)品,推動商業(yè)養(yǎng)老保險、個人養(yǎng)老金、專屬商業(yè)養(yǎng)老保險等產(chǎn)品供給。 搭養(yǎng)老政策東風(fēng) ...

關(guān)鍵字: 溫度 BSP 東風(fēng) 大眾

廣東佛山2022年10月19日 /美通社/ -- 空間是人居生活的基礎(chǔ)單元,承載著生存與活動的最基本功能。而對于理想空間的解構(gòu)意義卻在物理性容器之外,體現(xiàn)出人們對于空間和生活深層關(guān)系的思考,同時也塑造著人與空間的新型連接...

關(guān)鍵字: 溫度 BSP 智能化 進程

上海2022年10月19日 /美通社/ -- 10月17日晚間,安集科技披露業(yè)績預(yù)告。今年前三季度,公司預(yù)計實現(xiàn)營業(yè)收入7.54億元至8.33億元,同比增長60.24%至77.03%;歸母凈利潤預(yù)計為1.73億...

關(guān)鍵字: 電子 安集科技 BSP EPS

北京2022年10月19日 /美通社/ -- 10月18日,北京市經(jīng)濟和信息化局發(fā)布2022年度第一批北京市市級企業(yè)技術(shù)中心創(chuàng)建名單的通知,諾誠健華正式獲得"北京市企業(yè)技術(shù)中心"認(rèn)定。 北京市企業(yè)技...

關(guān)鍵字: BSP ARMA COM 代碼

北京2022年10月18日 /美通社/ -- 10月14日,國際數(shù)據(jù)公司(IDC)發(fā)布《2022Q2中國軟件定義存儲及超融合市場研究報告》,報告顯示:2022年上半年浪潮超融合銷售額同比增長59.4%,近5倍于...

關(guān)鍵字: IDC BSP 數(shù)字化 數(shù)據(jù)中心

上海2022年10月18日 /美通社/ -- 2022年9月5日,是首都銀行集團成立60周年的紀(jì)念日。趁著首都銀行集團成立60周年與首都銀行(中國)在華深耕經(jīng)營12年的“大日子”,圍繞作為外資金融機構(gòu)對在華戰(zhàn)略的構(gòu)想和業(yè)...

關(guān)鍵字: 數(shù)字化 BSP 供應(yīng)鏈 控制

東京2022年10月18日  /美通社/ -- NIPPON EXPRESS HOLDINGS株式會社(NIPPON EXPRESS HOLDINGS, INC.)旗下集團公司上海通運國際物流有限公司(Nipp...

關(guān)鍵字: 溫控 精密儀器 半導(dǎo)體制造 BSP

廣州2022年10月18日 /美通社/ -- 10月15日,第 132 屆中國進出口商品交易會("廣交會")于"云端"開幕。本屆廣交會上高新技術(shù)企業(yè)云集,展出的智能產(chǎn)品超過140,...

關(guān)鍵字: 中國智造 BSP 手機 CAN

要問機器人公司哪家強,波士頓動力絕對是其中的佼佼者。近來年該公司在機器人研發(fā)方面獲得的一些成果令人印象深刻,比如其開發(fā)的機器人會后空翻,自主爬樓梯等。這不,波士頓動力又發(fā)布了其機器人組團跳男團舞的新視頻,表演的機器人包括...

關(guān)鍵字: 機器人 BSP 工業(yè)機器人 現(xiàn)代汽車

通信技術(shù)

120740 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉