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


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM