1. 程式人生 > >android--------Socket的簡單了解

android--------Socket的簡單了解

簡介 http 封裝 字節流 抽象層 服務器 需要 net 一是

Socket目錄

技術分享圖片

Socket通信簡介

Android與服務器的通信方式主要有兩種,一是Http通信,一是Socket通信。兩者的最大差異在於,http連接使用的是“請求—響應方式”,即在請求時建立連接通道,當客戶端向服務器發送請求後,服務器端才能向客戶端返回數據。而Socket通信則是在雙方建立起連接後就可以直接進行數據的傳輸,在連接時可實現信息的主動推送,而不需要每次由客戶端想服務器發送請求。 那麽,什麽是socket?Socket又稱套接字,在程序內部提供了與外界通信的端口,即端口通信。通過建立socket連接,可為通信雙方的數據傳輸傳提供通道。socket的主要特點有數據丟失率低,使用簡單且易於移植。

什麽是Socket

Socket是一種抽象層,應用程序通過它來發送和接收數據,使用Socket可以將應用程序添加到網絡中,與處於同一網絡中的其他應用程序進行通信。簡單來說,Socket提供了程序內部與外界通信的端口並為通信雙方的提供了數據傳輸通道。

1:Socket的使用類型主要有兩種:

  • 流套接字(streamsocket) :基於 TCP協議,采用 流的方式 提供可靠的字節流服務
  • 數據報套接字(datagramsocket):基於 UDP協議,采用 數據報文 提供數據打包發送的服務

技術分享圖片

2:通信模型圖

技術分享圖片

Socket 與 Http 對比

  • Socket
    屬於傳輸層,因為 TCP / IP協議屬於傳輸層,解決的是數據如何在網絡中傳輸的問題
  • HTTP協議 屬於 應用層,解決的是如何包裝數據

由於二者不屬於同一層面,所以本來是沒有可比性的。但隨著發展,默認的Http裏封裝了下面幾層的使用,所以才會出現Socket & HTTP協議的對比:(主要是工作方式的不同):

Http:采用 請求—響應 方式。

  1. 即建立網絡連接後,當 客戶端 向 服務器 發送請求後,服務器端才能向客戶端返回數據。
  2. 可理解為:是客戶端有需要才進行通信

Socket:采用 服務器主動發送數據 的方式

  1. 即建立網絡連接後,服務器可主動發送消息給客戶端,而不需要由客戶端向服務器發送請求
  2. 可理解為:是服務器端有需要才進行通信

相關更多理論可以看: https://www.jianshu.com/p/a6d086a3997d

參考資料:

https://www.jianshu.com/p/a6d086a3997d

https://www.cnblogs.com/zhujiabin/p/5675716.html

https://blog.csdn.net/carson_ho/article/details/53366856

android--------Socket的簡單了解