• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Linux下使用SOCKET編程接口實現(xiàn)C/S通信

      2019-09-09 08:14:53董偉梁
      數(shù)碼世界 2019年5期
      關(guān)鍵詞:電話機(jī)流式監(jiān)聽

      董偉梁

      摘要:套接字(SOCKET)的客戶端/服務(wù)器(c/s)的通信模型,是基于TCP/IP協(xié)議的一種通信方式。本文結(jié)合c/s模型和SOCKET工作原理,闡述了socket原理以及如何實現(xiàn)Linux系統(tǒng)下的面向連接的socket通信。

      關(guān)鍵字:SOCKET C/S Linux TCP/IP

      引言

      網(wǎng)絡(luò)編程的特點就在于它從客戶端和服務(wù)器兩個方面出發(fā),具有監(jiān)聽、請求和連接三個過程。Linux與Unix十分相似,它不僅網(wǎng)絡(luò)功能非常強(qiáng)大,而且穩(wěn)定性高,很適合運用到網(wǎng)絡(luò)編程通信之中。SOCKET作為一種編程接口,在網(wǎng)絡(luò)協(xié)議和應(yīng)用程序的聯(lián)系之中扮演者不可或缺的角色。

      1 TCP/IP協(xié)議結(jié)構(gòu)

      TCP/IP協(xié)議由網(wǎng)絡(luò)層IP協(xié)議和運輸層TCP協(xié)議構(gòu)成,是一種基本的網(wǎng)絡(luò)協(xié)議。其中IP協(xié)議管理互聯(lián)網(wǎng)設(shè)備的地址,TCP協(xié)議管理數(shù)據(jù)的傳輸。TCP/IP協(xié)議下,應(yīng)用程序有兩種編程接口,傳輸層接口(TLI)和套接字接口(SOCKET)?,F(xiàn)如今,SOCKET接口已經(jīng)成為普遍認(rèn)可的編程接口形式。

      2 SOCKET通信原理與模型

      SOCKET中文名稱套接字,是一種為適應(yīng)TCP/IP程序開發(fā)而設(shè)計的一種接口形式。在一個具有兩端的通信進(jìn)程中,一個套接字只能描述其中一端,所以需要其他套接字來描述另一端。

      SOCKET在用于網(wǎng)絡(luò)通信時,取其幾個本意中“插座”的意思。套接字就好比是固定電話機(jī)和電話線之間的插座,或者說是接口。電話接口對應(yīng)著一個的電話號碼,當(dāng)乙使用電話機(jī)向甲尋求通話時,乙的電話機(jī)必須有一個確定的電話號碼,同時他也要知道甲的電話號碼。即至少在通信時雙方各擁有一個固定的SOCKET。這時如果甲處于空閑狀態(tài),那么他可以選擇接聽乙的來電,雙方之間的通話連接的得以建立。乙發(fā)出的信息是通過電話機(jī)處理后傳向甲的,同時他收到的信息也是經(jīng)過電話機(jī)接收和處理過的。整個過程總體如下:

      (1)服務(wù)器和客戶端分別建立SOCKET接口。

      (2)服務(wù)器處于監(jiān)聽狀態(tài)。客戶端描述待連接服務(wù)器的SOCKET,發(fā)送連接請求。

      (3)服務(wù)器作出相應(yīng),并返回端口號與SOCKET地址。連接建立。

      在電話通話時,還存在一種特殊情況。在通話連接建立之后,是丙而不是甲接聽電話,那么乙就需要請求甲接聽電話。為了能夠區(qū)分端口,每個SOCKET都會有一個由系統(tǒng)分配的唯一的端口號。在實際SOCKET通信時,服務(wù)器中有多個軟件進(jìn)程,當(dāng)進(jìn)程與一個端口相綁定后,系統(tǒng)就會把所要發(fā)給該進(jìn)程的信息通過端口號定位到相應(yīng)端口,再把信息準(zhǔn)確無誤地發(fā)給相應(yīng)進(jìn)程。

      SOCKET是為客戶端/服務(wù)器模型(C/S)而開發(fā)的。在這種模式下,客戶端的SOCKET并不是一定的,好比乙可以使用不同的終端來呼叫甲。然而服務(wù)器的SOCKET是固定的,同時對網(wǎng)絡(luò)中的每個客戶端來說,它的SOCKET是已知的。

      c/s模型是一種最基本的SOCKET模型,根據(jù)不同的發(fā)起方向,可以分為面向無連接形式和面向連接形式。UDP協(xié)議用于面向無連接的通信形式,該協(xié)議提供盡最大努力的服務(wù),但卻不具有一定的可靠性,只能通過超時報錯和重傳機(jī)制來維持?jǐn)?shù)據(jù)傳輸?shù)恼_性,在網(wǎng)絡(luò)連接狀況良好時尚可,不能適應(yīng)網(wǎng)絡(luò)惡劣的環(huán)境。而面向連接的通信采用TCP協(xié)議,它雖然相比UDP協(xié)議要耗費更多的資源,但在一定程度上維持了傳輸?shù)姆€(wěn)定性,比較能夠以適應(yīng)各種網(wǎng)絡(luò)環(huán)境下的傳輸工作。

      對于面向連接和面向無連接,套接字類型與之相對應(yīng)分為以下兩種形式:

      (1)流式套接字(SOCKSTREAM)。

      提供面向連接的傳輸服務(wù)。傳輸過程穩(wěn)定性強(qiáng),可靠性高,發(fā)生重復(fù)、丟失和損壞的坑能動性低,可以通過流量控制來把控傳輸,數(shù)據(jù)流服務(wù)對象多為連接上的應(yīng)用。

      (2)數(shù)據(jù)報套接口(SOCKDGARM)

      提供面向無連接的傳輸服務(wù)。傳輸?shù)臄?shù)據(jù)以獨立的形式被包裝成數(shù)據(jù)包發(fā)送,可靠性較低,發(fā)生傳輸錯誤的概率較高。

      3 Linux下的面向連接的SOCKET編程設(shè)計

      面向連接的SOCKET即流式套接字,采用TCP協(xié)議。基本工作過程如圖1所示。

      服務(wù)器: (1)使用socket()創(chuàng)建流式套接字。(2)通過bind()函數(shù)把相應(yīng)網(wǎng)絡(luò)地址和套接字關(guān)聯(lián)起來。(3)使用listen()來監(jiān)聽發(fā)送到端口的請求。(4)用accept()接受連接請求。無連接請求時,服務(wù)器進(jìn)程處于停滯狀態(tài),繼續(xù)等待客戶端。(5)連接建立后,新的流式套接字便會生成,這個套接字會與客戶端套接字關(guān)聯(lián),而原套接字繼續(xù)處于監(jiān)聽狀態(tài)。此時可通過read()和write()函數(shù)與客戶端通信。(6)使用close()可終止連接與服務(wù)。

      客戶端:(1)使用socket()創(chuàng)建流式套接字。(2)通過connect()發(fā)送連接服務(wù)器請求。(3)連接建立后,可用read()和write()函數(shù)與服務(wù)器通信。(4)使用close()可終止連接與服務(wù)。

      服務(wù)器和客戶端程序編寫完成后,使用Linux的程序編譯工具GCC和程序調(diào)試工具GDB分別對兩個程序進(jìn)行處理。處理完成后,在兩個終端內(nèi)分別運行客戶端程序和服務(wù)器程序,先令服務(wù)器處于監(jiān)聽狀態(tài),之后客戶端發(fā)送文本數(shù)據(jù),即可成功建立C/S連接。如圖2所示。

      4 結(jié)束語

      套接字作為一種主要的編程接口形式,掌握它的編寫和使用十分重要。由于套接字基于c/s通信模型,編程時需要編寫服務(wù)器和客戶端兩部分程序,來實現(xiàn)主機(jī)之間的可靠通信。

      參考文獻(xiàn)

      [1]李德水.基于SOCKET編程接口的網(wǎng)絡(luò)通信[J],渭南師范學(xué)院學(xué)報,2005(02): 69-71.

      [2]歐軍,吳清秀,裴云,張洪,基于socket的網(wǎng)絡(luò)通信技術(shù)研究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2011(07):19_21.

      [3]夏玲,王偉平,客戶端與服務(wù)器端的Socket通信[J],電腦知識與技術(shù),2009,5(04): 812813.

      猜你喜歡
      電話機(jī)流式監(jiān)聽
      千元監(jiān)聽風(fēng)格Hi-Fi箱新選擇 Summer audio A-401
      輻流式二沉池的結(jié)構(gòu)優(yōu)化研究
      網(wǎng)絡(luò)監(jiān)聽的防范措施
      電子制作(2017年20期)2017-04-26 06:58:02
      紅色電話機(jī)
      微球測速聚類分析的流式液路穩(wěn)定性評估
      一臺70多年前的電話機(jī)
      大江南北(2016年8期)2016-02-27 08:22:48
      應(yīng)召反潛時無人機(jī)監(jiān)聽航路的規(guī)劃
      自調(diào)流式噴管型ICD的設(shè)計與數(shù)值驗證
      流式在線直播視頻的采集
      河南科技(2015年8期)2015-03-11 16:23:41
      局域網(wǎng)監(jiān)聽軟件的設(shè)計
      河南科技(2014年5期)2014-02-27 14:08:21
      星座| 广汉市| 乌兰浩特市| 措勤县| 鄂托克前旗| 开封县| 鹤壁市| 佛教| 白山市| 闽清县| 通辽市| 牙克石市| 宝坻区| 翁牛特旗| 文水县| 玉田县| 葵青区| 三亚市| 江安县| 潞城市| 彭阳县| 广州市| 凤阳县| 呼和浩特市| 台中县| 万山特区| 汶川县| 鹿邑县| 五河县| 彭阳县| 襄垣县| 屏南县| 奎屯市| 新田县| 晋城| 海丰县| 天气| 神农架林区| 山阴县| 余干县| 得荣县|