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

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

2019-09-09 08:14:53董偉梁
數(shù)碼世界 2019年5期

董偉梁

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

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

引言

網(wǎng)絡(luò)編程的特點(diǎn)就在于它從客戶(hù)端和服務(wù)器兩個(gè)方面出發(fā),具有監(jiān)聽(tīng)、請(qǐng)求和連接三個(gè)過(guò)程。Linux與Unix十分相似,它不僅網(wǎng)絡(luò)功能非常強(qiáng)大,而且穩(wěn)定性高,很適合運(yù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é)議和運(yùn)輸層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)。現(xiàn)如今,SOCKET接口已經(jīng)成為普遍認(rèn)可的編程接口形式。

2 SOCKET通信原理與模型

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4 結(jié)束語(yǔ)

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

參考文獻(xiàn)

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

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

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

主站蜘蛛池模板: 久久夜色精品| 99久久免费精品特色大片| 2022国产91精品久久久久久| 亚洲欧美日韩中文字幕在线一区| 亚洲男人的天堂久久香蕉网| 亚洲第七页| 成人久久精品一区二区三区| 欧洲一区二区三区无码| 国产乱人伦精品一区二区| 免费可以看的无遮挡av无码| 久久香蕉国产线看精品| 国产免费黄| 亚洲天堂视频网站| 国产永久在线视频| 免费视频在线2021入口| 特级精品毛片免费观看| 久久视精品| h网站在线播放| 欧美曰批视频免费播放免费| 国产成人综合在线观看| 成人午夜福利视频| 国产成人高清精品免费软件 | 中文字幕永久视频| 高潮毛片无遮挡高清视频播放 | 国产99视频精品免费视频7| 亚洲欧洲美色一区二区三区| 婷婷色中文网| 亚洲成综合人影院在院播放| 国产成人精彩在线视频50| 亚洲视频四区| 91视频99| 老司国产精品视频91| 亚洲高清国产拍精品26u| 国产免费怡红院视频| 久久黄色一级片| 黄色网址手机国内免费在线观看| 久久黄色影院| 九九视频免费看| 亚洲区视频在线观看| 亚洲二三区| 91精品网站| 欧美日韩北条麻妃一区二区| 国产精品无码久久久久AV| 精品国产电影久久九九| 亚洲日本中文综合在线| 国产人人干| 亚洲中文无码av永久伊人| 最新国产你懂的在线网址| 波多野结衣无码中文字幕在线观看一区二区| 国产微拍精品| 一级毛片在线播放| 日韩最新中文字幕| 99er这里只有精品| 91麻豆久久久| 免费国产一级 片内射老| 中文字幕1区2区| 亚洲高清日韩heyzo| 国产精品偷伦视频免费观看国产| 欧美亚洲另类在线观看| 欧洲亚洲一区| 欧美日韩国产系列在线观看| 亚洲日本中文综合在线| 国产美女91呻吟求| 老色鬼欧美精品| 啊嗯不日本网站| 国产精品开放后亚洲| 91亚洲视频下载| 亚洲最大福利网站| 国产av无码日韩av无码网站| 中国丰满人妻无码束缚啪啪| 最新日韩AV网址在线观看| 激情六月丁香婷婷| 又爽又大又黄a级毛片在线视频| 国产色网站| 亚洲高清中文字幕在线看不卡| 国产青榴视频| 手机永久AV在线播放| 色老头综合网| 日韩少妇激情一区二区| 色久综合在线| 亚洲Aⅴ无码专区在线观看q| 亚洲精品福利网站|