Socket定義
1、Socket即套接字,是一個對 TCP / IP協議進行封裝的編程調用接口(API)
- 即通過
Socket
,我們才能在Andorid平台上通過TCP/IP
協議進行開發。 Socket
不是一種協議,而是一個編程調用接口(API
),屬於傳輸層(主要解決數據如何在網絡中傳輸)。
2、成對出現,一對套接字:
Socket ={(IP地址1:PORT端口號),(IP地址2:PORT端口號)}
原理
Socket
的使用類型主要有兩種:
1、流套接字(streamsocket
) :基於 TCP
協議,采用<流>的方式 提供可靠的字節流服務
2、數據報套接字(datagramsocket
):基於 UDP
協議,采用<數據報文>提供數據打包發送的服務
Socket 與 Http 對比
1、Socket
屬於傳輸層,因為 TCP/IP
協議屬於傳輸層,解決的是數據如何在網絡中傳輸的問題。
2、HTTP
協議屬於應用層,解決的是如何包裝數據。
由於二者不屬於同一層面,所以本來是沒有可比性的。但隨着發展,默認的Http里封裝了下面幾層的使用,所以才會出現Socket
& HTTP
協議的對比:(主要是工作方式的不同):
HTTP
:采用<請求—響應>方式。
即建立網絡連接后,當 客戶端 向 服務器 發送請求后,服務器端才能向客戶端返回數據。
可理解為:是客戶端有需要才進行通信。
Socket
:采用<服務器主動發送數據>的方式。
即建立網絡連接后,服務器可主動發送消息給客戶端,而不需要由客戶端向服務器發送請求。
可理解為:是服務器端有需要才進行通信。
HTTP和Socket的區別,兩個協議哪個更高效一點?
1、創建Socket鏈接時,可以指定使用的傳輸層協議,Socket可以支持不同的傳輸層協議(TCP或UDP),當使用TCP協議進行連接時,該Socket連接就是一個TCP連接。Socket連接一旦建立,通信雙方即可開始發送數據內容,直到雙方連接斷開。
注意,同HTTP協議相比不同的是HTTP只能基於TCP,Socket不僅能走TCP,而且還能走UDP,這個是socket的第一個特點。
2、HTTP連接使用的是“請求-響應”的方式,不僅在請求時需要先建立連接,而且需要客戶端向服務器發出請求后,服務器端才能回復數據。
很多情況下,需要服務器端主動向客戶端推送數據,保持客戶端與服務器數據的實時與同步。
此時若雙方建立的是Socket連接,服務器就可以直接將數據傳送給客戶端;若雙方建立的是HTTP連接,則服務器需要等到客戶端發送一次請求后才能將數據傳回給客戶端。
Socket效率高,至少不用解析HTTP報文頭部一些字段。