#Socket回顧學(xué)習(xí)筆記

Socket學(xué)習(xí)筆記

Socket基礎(chǔ)知識(shí)

背景
  應(yīng)用層通過傳輸層進(jìn)行數(shù)據(jù)通信時(shí)隐岛,TCP會(huì)遇到同時(shí)為多個(gè)應(yīng)用程序進(jìn)程提供并發(fā)服務(wù)的問題踊沸。多個(gè)TCP連接或多個(gè)應(yīng)用程序進(jìn)程可能需要通過同一個(gè) TCP協(xié)議端口傳輸數(shù)據(jù)苛蒲。為了區(qū)別不同的應(yīng)用程序進(jìn)程和連接笋颤,許多計(jì)算機(jī)操作系統(tǒng)為應(yīng)用程序與TCP/IP協(xié)議交互提供了套接字(Socket)接口勤篮。應(yīng)用層可以和傳輸層通過Socket接口都毒,區(qū)分來自不同應(yīng)用程序進(jìn)程或網(wǎng)絡(luò)連接的通信,實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)牟l(fā)服務(wù)碰缔。
Socket概念
socketLocation.jpg
  • Socket 又稱"套接字"账劲,是系統(tǒng)提供的用于網(wǎng)絡(luò)通信的方法。 它的本質(zhì)并不是協(xié)議, 而是一個(gè)調(diào)用接口(API)瀑焦。 通過 Socket 腌且, 我們才能使用 TCP/IP 協(xié)議。

  • 套接字(socket)是網(wǎng)絡(luò)通信過程中端點(diǎn)的抽象表示榛瓮,包含進(jìn)行網(wǎng)絡(luò)通信必須的五種信息:連接使用的協(xié)議铺董,本地主機(jī)的IP地址,本地進(jìn)程的協(xié)議端口禀晓,遠(yuǎn)地主機(jī)的IP地址精续,遠(yuǎn)地進(jìn)程的協(xié)議端口。

Socket支持的協(xié)議

Socket可以支持不同的傳輸層協(xié)議(TCP或UDP),具體采用哪種協(xié)議粹懒,有業(yè)務(wù)場(chǎng)景來決定;

TCP

TCP是面向連接的重付、傳輸可靠(保證數(shù)據(jù)正確性且保證數(shù)據(jù)順序)、用于傳輸大量數(shù)據(jù)(流模式)凫乖、速度慢确垫,建立連接需要開銷較多(時(shí)間,系統(tǒng)資源)拣凹。

TCP是一種流模式的協(xié)議森爽,是面向連接的,也就是說嚣镜,在連接持續(xù)的過程中爬迟,socket中收到的數(shù)據(jù)都是由同一臺(tái)主機(jī)發(fā)出的(劫持什么的不考慮),因此菊匿,知道保證數(shù)據(jù)是有序的到達(dá)就行了付呕,至于每次讀取多少數(shù)據(jù)不關(guān)心。

tcp.jpg
UDP

UDP是面向無連接跌捆、傳輸不可靠徽职、用于傳輸少量數(shù)據(jù)(數(shù)據(jù)包模式)、速度快的傳輸層協(xié)議佩厚。注意姆钉,UDP傳輸?shù)氖菙?shù)據(jù)報(bào)包,而TCP是流抄瓦。

UDP是面向無連接的協(xié)議潮瓶,只要知道接收端的IP和端口,且網(wǎng)絡(luò)是可達(dá)的钙姊,任何主機(jī)都可以向接收端發(fā)送數(shù)據(jù)毯辅。這時(shí)候,如果一次能讀取超過一個(gè)報(bào)文的數(shù)據(jù)煞额,則會(huì)亂套思恐。比如沾谜,主機(jī)A向發(fā)送了報(bào)文P1,主機(jī)B發(fā)送了報(bào)文P2胀莹,如果能夠讀取超過一個(gè)報(bào)文的數(shù)據(jù)基跑,那么就會(huì)將P1和P2的數(shù)據(jù)合并在了一起,這樣的數(shù)據(jù)是沒有意義的嗜逻。

udp.jpg

關(guān)于UDP 廣播 多播概念可以移步這里http://www.reibang.com/p/41c2a53d719b

Socket連接基本步驟

建立Socket連接至少需要一對(duì)套接字涩僻,其中一個(gè)運(yùn)行于客戶端,稱為ClientSocket; 另一個(gè)運(yùn)行于服務(wù)器端栈顷,稱為ServerSocket。

socket通信過程如下:
  • 服務(wù)端利用Socket監(jiān)聽端口嵌巷;
  • 客戶端發(fā)起連接萄凤;
  • 服務(wù)端返回信息,建立連接搪哪,開始通信靡努;
  • 客戶端,服務(wù)端斷開連接晓折。
套接字之間的連接過程分為三個(gè)步驟:
  • 服務(wù)器監(jiān)聽:服務(wù)器端套接字并不定位具體的客戶端套接字惑朦,而是處于等待連接的狀態(tài),實(shí)時(shí)監(jiān)控網(wǎng)絡(luò)狀態(tài)漓概,等待客戶端的連接請(qǐng)求

  • 客戶端請(qǐng)求:客戶端的套接字提出連接請(qǐng)求漾月,要連接到目標(biāo)服務(wù)器端的套接字。為此胃珍,客戶端的套接字必須首先描述它要連接的服務(wù)器的套接字梁肿,指出服務(wù)器端套接字的地址和端口號(hào),然后就向服務(wù)器端套接字提出連接請(qǐng)求

  • 連接確認(rèn):當(dāng)服務(wù)器端的套接字監(jiān)聽到或者說接收到客戶端的套接字的連接請(qǐng)求時(shí)觅彰,就響應(yīng)客戶端套接字的請(qǐng)求吩蔑,建立一個(gè)新的線程,把服務(wù)器端套接字的描述發(fā)給客戶端填抬,一旦客戶端確認(rèn)了此描述烛芬,雙方就正式建立連接。而服務(wù)器端套接字繼續(xù)處于監(jiān)聽狀態(tài)飒责,繼續(xù)接收其他客戶端套接字的連接請(qǐng)求

iOS端Socket編程

既可以C語(yǔ)言 也可以 OC語(yǔ)言實(shí)現(xiàn)赘娄,
目前第三方庫(kù)中比較好的是 CocoaAsyncSocket。

參考學(xué)習(xí)文章

1.Soket 理論知識(shí)http://www.reibang.com/p/06f8b9111a56

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末读拆,一起剝皮案震驚了整個(gè)濱河市擅憔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌檐晕,老刑警劉巖暑诸,帶你破解...
    沈念sama閱讀 221,888評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蚌讼,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡个榕,警方通過查閱死者的電腦和手機(jī)篡石,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來西采,“玉大人凰萨,你說我怎么就攤上這事⌒倒荩” “怎么了胖眷?”我有些...
    開封第一講書人閱讀 168,386評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)霹崎。 經(jīng)常有香客問我珊搀,道長(zhǎng),這世上最難降的妖魔是什么尾菇? 我笑而不...
    開封第一講書人閱讀 59,726評(píng)論 1 297
  • 正文 為了忘掉前任境析,我火速辦了婚禮,結(jié)果婚禮上派诬,老公的妹妹穿的比我還像新娘劳淆。我一直安慰自己,他們只是感情好默赂,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評(píng)論 6 397
  • 文/花漫 我一把揭開白布沛鸵。 她就那樣靜靜地躺著,像睡著了一般放可。 火紅的嫁衣襯著肌膚如雪谒臼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,337評(píng)論 1 310
  • 那天耀里,我揣著相機(jī)與錄音蜈缤,去河邊找鬼。 笑死冯挎,一個(gè)胖子當(dāng)著我的面吹牛底哥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播房官,決...
    沈念sama閱讀 40,902評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼趾徽,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了翰守?” 一聲冷哼從身側(cè)響起孵奶,我...
    開封第一講書人閱讀 39,807評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蜡峰,沒想到半個(gè)月后了袁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體朗恳,經(jīng)...
    沈念sama閱讀 46,349評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評(píng)論 3 340
  • 正文 我和宋清朗相戀三年载绿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了粥诫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,567評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡崭庸,死狀恐怖怀浆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情怕享,我是刑警寧澤执赡,帶...
    沈念sama閱讀 36,242評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站函筋,受9級(jí)特大地震影響搀玖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜驻呐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望芳来。 院中可真熱鬧含末,春花似錦、人聲如沸即舌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)顽聂。三九已至肥惭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間紊搪,已是汗流浹背蜜葱。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留耀石,地道東北人牵囤。 一個(gè)月前我還...
    沈念sama閱讀 48,995評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像滞伟,于是被迫代替她去往敵國(guó)和親揭鳞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評(píng)論 2 359

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

  • 1.1 TCP/IP協(xié)議組 TCP/IP協(xié)議(傳輸控制協(xié)議)由網(wǎng)絡(luò)層的IP協(xié)議和傳輸層的TCP協(xié)議組成 IP層負(fù)責(zé)...
    F麥子閱讀 2,791評(píng)論 0 25
  • 參考:http://www.2cto.com/net/201611/569006.html TCP HTTP UD...
    F麥子閱讀 2,951評(píng)論 0 14
  • 一: 網(wǎng)絡(luò)各個(gè)協(xié)議:TCP/IP狈惫、SOCKET睛蛛、HTTP 網(wǎng)絡(luò)七層由下往上分別為物理層、數(shù)據(jù)鏈路層胧谈、網(wǎng)絡(luò)層忆肾、傳輸層...
    iYeso閱讀 1,438評(píng)論 0 13
  • 蘇格 ~充滿著無限的力量,能讓人沉淪菱肖,能讓人振奮客冈! 與我而言,能讓我心里的千軍萬(wàn)馬有的放矢稳强!如果哪天沒有了想碼字的...
    miss_suge閱讀 260評(píng)論 0 0
  • 當(dāng)你散步時(shí)场仲,不知道你是否注意到河邊有一片狹長(zhǎng)的水池?這一定是某些漁夫挖的,水池與河水并沒有連接在一起退疫。河水穩(wěn)定...
    菲梵飛閱讀 357評(píng)論 0 0