最近看到**裡提到某個架構選用tcp連線而不是http連線,意識到自己不知道這兩者的區別,遂查資料補一下知識。
再用自己的話總結提煉一下:
題目是android http連線和tcp連線的區別,因為我關注的使用場景是android環境,其實不管是android還是pc,應該都是一樣的。
http是應用層協議,tcp是網路層協議,應用層在tcp/ip四層架構中位於tcp的上一層。建立http連線在實現時有以下兩種方式
connection.connect();而tcp連線在實現時要借助socket(套接字 ip+埠號)
socket s = new socket("localhost", 12345);
我覺得區別從這兩個連線的實現方式就可以看出來,
連線需要指明資源的
url,發出請求的應用不知道伺服器的
ip,雖然網域名稱伺服器也是要把網域名稱解析成
ip位址,但不屬於應用所關心的範疇,是網路層應該完成的工作。所以
連線屬於無狀態的短連線,若再請求其他資料,需要再重新建立連線。客戶端向伺服器傳送請求後,伺服器才知道客戶端的存在。
tcp連線實現時需要指明
ip位址和埠號,就可以跟目的主機通過三次握手建立聯絡,該連線一直保持直到某一方提出取消連線,通過四次握手關閉連線。
socket
支援tcp/udp
協議,如果使用
tcp協議,那麼
socket
連線就是
tcp連線。**提到的應用場景是手機與雲端的伺服器建立聯絡,因為要保持連線並指定連線的建立時間,所以在這種場景下使用
tcp連線最合適。
3g網路不支援端到端建立
tcp連線,因為它是
client-server
模式,所以需要通過雲端伺服器的輔助來實現手機的端到端通訊。
Android Http連線之GET POST請求
在android sdk中提供了apache httpclient org.apache.http.模組。在這個模組中涉及到兩個重要的類 httpget和httppost。建立步驟 1 建立httpget 或httppost 物件,將要請求的url通過構造方法傳入httpget 或httppost ...
Android Http連線之GET POST請求
在android sdk中提供了apache httpclient org.apache.http.模組。在這個模組中涉及到兩個重要的類 httpget和httppost。建立步驟 1 建立httpget 或httppost 物件,將要請求的url通過構造方法傳入httpget 或httppost ...
Android Http連線之GET POST請求
在android sdk中提供了apache httpclient org.apache.http.模組。在這個模組中涉及到兩個重要的類 httpget和httppost。建立步驟 1 建立httpget 或httppost 物件,將要請求的url通過構造方法傳入httpget 或httppost ...