Socket 套接字
- IP地址 定位網(wǎng)絡(luò)主機(jī)
- 端口號(hào) 定位進(jìn)程(定位程序)
- 有效端口號(hào)范圍 0 ~ 65535, 0 ~ 1024 是系統(tǒng)用的
- 傳輸協(xié)議(用什么樣的方式進(jìn)行交互)
- TCP(傳輸控制協(xié)議): 建立連接,行程傳輸通道. 通過三次握手完成連接,可以傳輸大數(shù)據(jù)(無限制), 是可靠協(xié)議,安全送達(dá). 必須建立連接, 效率稍低.
- HTTP: 既可以基于TCP 也可以基于UDP, 一般是基于TCP 每次發(fā)HTTP請(qǐng)求建立一次連接
- UDP(用戶數(shù)據(jù)報(bào)協(xié)議): 將數(shù)據(jù)及源和目的封裝成數(shù)據(jù)包中, 不需要建立連接. 傳小數(shù)據(jù)(64K)以內(nèi), 不可靠協(xié)議, 速度快, 效率高.
Socket服務(wù)端
HTTP的通信:socket() -> bind(端口) -> listen(端口) -> accept() -> read(客戶端發(fā)的數(shù)據(jù)) -> write(返回?cái)?shù)據(jù)) ->close()斷開連接
長(zhǎng)連接和短連接
群聊
client1 把消息發(fā)給server. server再把消息轉(zhuǎn)發(fā)給client2, client3.
XMPP(The Extensible Messaging and Presence Protocal)
- 可拓展的通信表示協(xié)議
比如HTTP發(fā)送分兩部分 請(qǐng)求頭和請(qǐng)求體. 是類似于key-value的方式.
而XMPP 則是xml的方式
<Login>
<userName>zhangsan</userName>
<password>123</password>
</Login>
- RFC官方文檔3920 定義了登錄,退出,獲取好友,發(fā)送消息等XML數(shù)據(jù)傳輸協(xié)議
- C/S架構(gòu), 通過TCP/IP協(xié)議連接到服務(wù)器, 通過Socket建立連接, 傳輸XML流
- 一般使用OpenFire服務(wù)器
- 客戶端使用XMPPFramework框架, 封裝了XML操作.