Android與服務器的通訊方式主要有兩種,一是Http通訊,一是Socket通訊。二者的最大差別在於,http鏈接使用的是「請求—響應方式」,即在請求時創建鏈接通道,當客戶端向服務器發送請求後,服務器端才能向客戶端返回數據。而Socket通訊則是在雙方創建起鏈接後就能夠直接進行數據的傳輸,在鏈接時可實現信息的主動推送,而不須要每次由客戶端想服務器發送請求。 那麼,什麼是socket?Socket又稱套接字,在程序內部提供了與外界通訊的端口,即端口通訊。經過創建socket鏈接,可爲通訊雙方的數據傳輸傳提供通道。socket的主要特色有數據丟失率低,使用簡單且易於移植。html
Socket是一種抽象層,應用程序經過它來發送和接收數據,使用Socket能夠將應用程序添加到網絡中,與處於同一網絡中的其餘應用程序進行通訊。簡單來講,Socket提供了程序內部與外界通訊的端口併爲通訊雙方的提供了數據傳輸通道。服務器
1:Socket
的使用類型主要有兩種:streamsocket
) :基於 TCP
協議,採用 流的方式 提供可靠的字節流服務datagramsocket
):基於 UDP
協議,採用 數據報文 提供數據打包發送的服務
Socket
屬於傳輸層,由於 TCP / IP
協議屬於傳輸層,解決的是數據如何在網絡中傳輸的問題HTTP
協議 屬於 應用層,解決的是如何包裝數據
因爲兩者不屬於同一層面,因此原本是沒有可比性的。但隨着發展,默認的Http裏封裝了下面幾層的使用,因此纔會出現Socket
& HTTP
協議的對比:(主要是工做方式的不一樣):網絡
Http
:採用 請求—響應 方式。socket
Socket
:採用 服務器主動發送數據 的方式spa
相關更多理論能夠看: https://www.jianshu.com/p/a6d086a3997d.net
參考資料:code
https://www.jianshu.com/p/a6d086a3997dhtm
https://www.cnblogs.com/zhujiabin/p/5675716.htmlblog
https://blog.csdn.net/carson_ho/article/details/53366856stream