2018-07-17客戶(hù)端到服務(wù)器端的通信過(guò)程及原理

? 學(xué)習(xí)任何東西怜庸,我們只要搞清楚其原理馏鹤,就會(huì)觸類(lèi)旁通。現(xiàn)在結(jié)和我所學(xué)款侵,我想總結(jié)一下客戶(hù)端到服務(wù)器端的通信過(guò)程末荐。只有明白了原理,我們才會(huì)明白當(dāng)我們程序開(kāi)發(fā)過(guò)程中錯(cuò)誤的問(wèn)題會(huì)出現(xiàn)在那新锈,才會(huì)更好的解決問(wèn)題甲脏。

我們首先要了解一個(gè)概念性的詞匯:Socket

? socket的英文原義是“孔”或“插座”。作為進(jìn)程通信機(jī)制妹笆,取后一種意思块请。通常也稱(chēng)作“套接字”,用于描述IP地址和端口拳缠,是一個(gè)通信鏈的句柄墩新。(其實(shí)就是兩個(gè)程序通信用的。)socket非常類(lèi)似于電話(huà)的插座脊凰。以一個(gè)電話(huà)網(wǎng)為例抖棘。電話(huà)的通話(huà)雙方相當(dāng)于相互通信的2個(gè)程序,電話(huà)號(hào)碼可以當(dāng)作是IP地址狸涌。任何用戶(hù)在通話(huà)之前切省,首先要占有一部電話(huà)機(jī),相當(dāng)于申請(qǐng)一個(gè)socket帕胆;同時(shí)要知道對(duì)方的號(hào)碼(IP地址)朝捆,相當(dāng)于對(duì)方有一個(gè)固定的socket。然后向?qū)Ψ綋芴?hào)呼叫懒豹,相當(dāng)于發(fā)出連接請(qǐng)求芙盘。對(duì)方假如在場(chǎng)并空閑,拿起電話(huà)話(huà)筒脸秽,雙方就可以正式通話(huà)儒老,相當(dāng)于連接成功。雙方通話(huà)的過(guò)程记餐,是一方向電話(huà)機(jī)發(fā)出信號(hào)和對(duì)方從電話(huà)機(jī)接收信號(hào)的過(guò)程驮樊,相當(dāng)于向socket發(fā)送數(shù)據(jù)和從socket接收數(shù)據(jù)。通話(huà)結(jié)束后片酝,一方掛起電話(huà)機(jī)相當(dāng)于關(guān)閉socket囚衔,撤消連接,通信完成雕沿。

以上通信是以?xún)蓚€(gè)人通話(huà)做為事例來(lái)在概的說(shuō)明了下通信练湿,但是現(xiàn)在假如通信中的一個(gè)人是外國(guó)人(說(shuō)英語(yǔ)),一個(gè)人是中國(guó)人(說(shuō)普通話(huà))审轮,他們倆相互通信的話(huà)肥哎,都不能聽(tīng)明白對(duì)方說(shuō)的是什么辽俗,那么他們的溝通就不能夠完成。但是如果我們給一個(gè)規(guī)定贤姆,給通話(huà)雙方榆苞,只能講普通話(huà),那么雙方溝通就沒(méi)有障礙了霞捡。這就引出來(lái)了通信協(xié)議。

有兩種類(lèi)型:(Tcp協(xié)議與Udp協(xié)議):

Tcp協(xié)議與Udp協(xié)議是在兩硬件設(shè)備上進(jìn)行通信傳輸?shù)囊环N數(shù)據(jù)語(yǔ)法薄疚。

– 流式Socket(STREAM):

??? 是一種面向連接的Socket碧信,針對(duì)于面向連接的TCP服務(wù)應(yīng)用,安全街夭,但是效率低砰碴;Tcp:是以流的形式來(lái)傳的。

– 數(shù)據(jù)報(bào)式Socket(DATAGRAM):

??? 是一種無(wú)連接的Socket,對(duì)應(yīng)于無(wú)連接的UDP服務(wù)應(yīng)用.不安全(丟失,順序混亂,在接收端要分析重排及要求重發(fā)),但效率高.Udp:將數(shù)據(jù)包拆開(kāi)為若干份編號(hào)后來(lái)傳輸板丽。在傳輸?shù)倪^(guò)程中容易出現(xiàn)數(shù)據(jù)的丟失呈枉。但是傳輸速度要比TCP的快。

Socket的通信流程

Demo:

服務(wù)器端:

– 申請(qǐng)一個(gè)socket?(socketWatch)用來(lái)監(jiān)聽(tīng)的

– 綁定到一個(gè)IP地址和一個(gè)端口上

– 開(kāi)啟偵聽(tīng)埃碱,等待接授客戶(hù)端的連接

– 當(dāng)有連接時(shí)創(chuàng)建一個(gè)用于和連接進(jìn)來(lái)的客戶(hù)端進(jìn)行通信的socket(socketConnection)

– 即續(xù)監(jiān)聽(tīng),等侍下一個(gè)客戶(hù)的連接

客戶(hù)端:

– 申請(qǐng)一個(gè)socket(socketClient)

– 連接服務(wù)器(指明IP地址和端口號(hào))

通過(guò)以上流程圖我們可以看出猖辫,客戶(hù)端與服務(wù)器端之間的一個(gè)基本通信流程,概括一下Socket 一般應(yīng)用模式(客戶(hù)端和服務(wù)器端)的作用:

服務(wù)器端:最少有兩個(gè)socket,一個(gè)是服務(wù)端負(fù)責(zé)監(jiān)聽(tīng)客戶(hù)端發(fā)來(lái)連接請(qǐng)求,但不負(fù)責(zé)與請(qǐng)求的客戶(hù)端通信砚殿,另一個(gè)是每當(dāng)服務(wù)器端成功接收到客戶(hù)端時(shí)啃憎,但在服務(wù)器端創(chuàng)建一個(gè)用與請(qǐng)求的客戶(hù)端進(jìn)行通信的socket.

客戶(hù)端:指定要連接的服務(wù)器端地址和端口,通過(guò)創(chuàng)建一個(gè)socket對(duì)象來(lái)初始化一個(gè)到服務(wù)器端的TCP連接似炎。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末辛萍,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子羡藐,更是在濱河造成了極大的恐慌贩毕,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仆嗦,死亡現(xiàn)場(chǎng)離奇詭異辉阶,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)欧啤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)睛藻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人邢隧,你說(shuō)我怎么就攤上這事店印。” “怎么了倒慧?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵按摘,是天一觀的道長(zhǎng)包券。 經(jīng)常有香客問(wèn)我,道長(zhǎng)炫贤,這世上最難降的妖魔是什么溅固? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮兰珍,結(jié)果婚禮上侍郭,老公的妹妹穿的比我還像新娘。我一直安慰自己掠河,他們只是感情好亮元,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著唠摹,像睡著了一般爆捞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上勾拉,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天煮甥,我揣著相機(jī)與錄音,去河邊找鬼藕赞。 笑死成肘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的找默。 我是一名探鬼主播艇劫,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼惩激!你這毒婦竟也來(lái)了店煞?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤风钻,失蹤者是張志新(化名)和其女友劉穎顷蟀,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體骡技,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鸣个,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了布朦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片囤萤。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖是趴,靈堂內(nèi)的尸體忽然破棺而出涛舍,到底是詐尸還是另有隱情,我是刑警寧澤唆途,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布富雅,位于F島的核電站掸驱,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏没佑。R本人自食惡果不足惜毕贼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蛤奢。 院中可真熱鬧鬼癣,春花似錦、人聲如沸啤贩。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)瓜晤。三九已至,卻和暖如春腹纳,著一層夾襖步出監(jiān)牢的瞬間痢掠,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工嘲恍, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留足画,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓佃牛,卻偏偏與公主長(zhǎng)得像淹辞,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子俘侠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容