p_即使通訊

0.XMPP和環(huán)信
1.什么是Socket。(套接字、兩個(gè)程序的連接、internet上多個(gè)服務(wù)軟件、舉例房間)
2.網(wǎng)絡(luò)通訊的要素。(4點(diǎn))
3.TCP與UDP。
4.Socket通信流程圖
5.Socket和Socket層上的協(xié)議、TCP/UDP、TCP/IP(名字、分開(kāi)的單獨(dú)的作用、TCP/UDP在IP上的例子)、HTTP、XMPP 之間的區(qū)別。
6.長(zhǎng)連接/短連接

http://m.itdecent.cn/p/3167802eb1e5

?:長(zhǎng)連接/短連接
?:怎么與即時(shí)通信、環(huán)信結(jié)合在一起講?

TCP/IP:中譯名為傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議,又名網(wǎng)絡(luò)通訊協(xié)議。[通俗]而言:TCP負(fù)責(zé)發(fā)現(xiàn)[傳輸?shù)膯?wèn)題,一有問(wèn)題就發(fā)出信號(hào),要求重新傳輸,直到所有[數(shù)據(jù)安全]正確地傳輸?shù)侥康牡?。而IP是給[因特網(wǎng)]的每一臺(tái)聯(lián)網(wǎng)設(shè)備規(guī)定一個(gè)地址。

6.長(zhǎng)連接/短連接
短連接 連接->傳輸數(shù)據(jù)->關(guān)閉連接 HTTP是無(wú)狀態(tài)的,瀏覽器和服務(wù)器每進(jìn)行一次HTTP操作,就建立一次連接,但任務(wù)結(jié)束就中斷連接。 也可以這樣說(shuō):短連接是指SOCKET連接后發(fā)送后接收完數(shù)據(jù)后馬上斷開(kāi)連接。
長(zhǎng)連接 連接->傳輸數(shù)據(jù)->保持連接 -> 傳輸數(shù)據(jù)-> 。。。 ->關(guān)閉連接。 長(zhǎng)連接指建立SOCKET連接后不管是否使用都保持連接,但安全性較差。

什么時(shí)候用長(zhǎng)連接,短連接
長(zhǎng)連接多用于操作頻繁,點(diǎn)對(duì)點(diǎn)的通訊,而且連接數(shù)不能太多情況,。每個(gè)TCP連接都需要三步握手,這需要時(shí)間,如果每個(gè)操作都是先連接,再操作的話那么處理速度會(huì)降低很多,所以每個(gè)操作完后都不斷開(kāi),次處理時(shí)直接發(fā)送數(shù)據(jù)包就OK了,不用建立TCP連接。例如:數(shù)據(jù)庫(kù)的連接用長(zhǎng)連接, 如果用短連接頻繁的通信會(huì)造成socket錯(cuò)誤,而且頻繁的socket 創(chuàng)建也是對(duì)資源的浪費(fèi)。

TCP****短連接
我們模擬一下TCP短連接的情況,client向server發(fā)起連接請(qǐng)求,server接到請(qǐng)求,然后雙方建立連接。client向server發(fā)送消息,server回應(yīng)client,然后一次讀寫就完成了,這時(shí)候雙方任何一個(gè)都可以發(fā)起close操作,不過(guò)一般都是client先發(fā)起close操作。為什么呢,一般的server不會(huì)回復(fù)完client后立即關(guān)閉連接的,當(dāng)然不排除有特殊的情況。從上面的描述看,短連接一般只會(huì)在client/server間傳遞一次讀寫操作
短連接的優(yōu)點(diǎn)是:管理起來(lái)比較簡(jiǎn)單,存在的連接都是有用的連接,不需要額外的控制手段
TCP****長(zhǎng)連接
接下來(lái)我們?cè)倌M一下長(zhǎng)連接的情況,client向server發(fā)起連接,server接受client連接,雙方建立連接。Client與server完成一次讀寫之后,它們之間的連接并不會(huì)主動(dòng)關(guān)閉,后續(xù)的讀寫操作會(huì)繼續(xù)使用這個(gè)連接。
在長(zhǎng)連接的應(yīng)用場(chǎng)景下,client端一般不會(huì)主動(dòng)關(guān)閉它們之間的連接,Client與server之間的連接如果一直不關(guān)閉的話,會(huì)存在一個(gè)問(wèn)題,隨著客戶端連接越來(lái)越多,server早晚有扛不住的時(shí)候,這時(shí)候server端需要采取一些策略,如關(guān)閉一些長(zhǎng)時(shí)間沒(méi)有讀寫事件發(fā)生的連接,這樣可以避免一些惡意連接導(dǎo)致server端服務(wù)受損;如果條件再允許就可以以客戶端機(jī)器為顆粒度,限制每個(gè)客戶端的最大長(zhǎng)連接數(shù),這樣可以完全避免某個(gè)蛋疼的客戶端連累后端服務(wù)。

7.XMPP 與 環(huán)信:
XMPP:
1.是一個(gè)即時(shí)通訊的協(xié)議,規(guī)范了用于即時(shí)通信在網(wǎng)絡(luò)上的傳輸格式,比如登錄,獲取好友列表等的格式。基于的網(wǎng)絡(luò)形式是客戶端通過(guò)TCP/IP鏈接到服務(wù)器,通過(guò)Socket建立鏈接,然后在之上傳輸XML流。
2.客戶端是使用一個(gè)XMPPFramework框架實(shí)現(xiàn),服務(wù)器是使用Openfire,一個(gè)開(kāi)源的服務(wù)器??蛻舳双@取到服務(wù)器發(fā)送過(guò)來(lái)的好友消息,客戶端需要對(duì)XML進(jìn)行解析,使用解析框架KissXML框架。
3.類似于HTTP協(xié)議的一種數(shù)據(jù)傳輸協(xié)議,其過(guò)程就如同“解包裝”----->包裝的過(guò)程。只需要理解其接受的類型以及返回的類型,便可以很好的利用XMPP來(lái)進(jìn)行數(shù)據(jù)通訊。

環(huán)信:
1.環(huán)信使用的是XMPP協(xié)議,它是在XMPP基礎(chǔ)上進(jìn)行二次開(kāi)發(fā),對(duì)服務(wù)器Openfire和客戶端進(jìn)行功能模型的添加和客戶端SDK的封裝,環(huán)信的本質(zhì)還是使用XMPP,基于Socket的網(wǎng)絡(luò)通信。
2.環(huán)信內(nèi)部實(shí)現(xiàn)了數(shù)據(jù)緩存,會(huì)把聊天記錄添加到數(shù)據(jù)庫(kù),把附件(音頻文件,圖片文件)下載到本地,使程序員更多時(shí)間是滑到用戶即時(shí)通訊的體驗(yàn)上。其內(nèi)部已經(jīng)實(shí)現(xiàn)了視頻,音頻,圖片和其他附件發(fā)送功能。
3.好處:不需要公司內(nèi)部搭建服務(wù)器,節(jié)約成本,日活30萬(wàn)以下永遠(yuǎn)免費(fèi);客戶端的開(kāi)發(fā),使用環(huán)信SDK比使用XMPPFramework更簡(jiǎn)潔方便。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,695評(píng)論 19 139
  • 1、TCP狀態(tài)linux查看tcp的狀態(tài)命令:1)、netstat -nat 查看TCP各個(gè)狀態(tài)的數(shù)量2)、lso...
    北辰青閱讀 9,738評(píng)論 0 11
  • 轉(zhuǎn)。。。。。。。。 SOCKET,TCP/UDP,HTTP,FTP (一)TCP/UDP,SOCKET,HTTP,...
    zeqinjie閱讀 3,388評(píng)論 1 53
  • 前言 本文會(huì)用實(shí)例的方式,將iOS各種IM的方案都簡(jiǎn)單的實(shí)現(xiàn)一遍。并且提供一些選型、實(shí)現(xiàn)細(xì)節(jié)以及優(yōu)化的建議。 注:...
    涂耀輝閱讀 95,112評(píng)論 219 1,748
  • 帶孩子到河源辦事游玩,本來(lái)害怕她不聽(tīng)話!因?yàn)閺亩亲永锍鰜?lái),就沒(méi)怎么離開(kāi)過(guò)奶奶幾天!晚上還不怎么和我睡覺(jué)! 昨天一天...
    何蓉閱讀 222評(píng)論 0 0

友情鏈接更多精彩內(nèi)容