Android中通訊協定,Android通訊協定
一、TCP/IP協議(傳輸層協議)
1、Socket與ServerSocket
Socket是應用程式層與TCP/IP協議簇通訊的中間抽象層,Socket是一組介面,在設計模式中,Socket的設計就是門面模式,它把複雜的TCP/IP協議簇的內容隱藏在通訊端介面後面,使用者無需關心協議的實現,只需使用Socket提供的介面即可。
Socket的類型有兩種,一種是連線導向的TCP應用服務,一種是面向不需連線的UDP(User Data Package)應用服務。通俗的理解就是,TCP方式是打電話(串連性),UDP方式是發簡訊(無串連)。
ServerSocket類,是用於監聽電腦的指定連接埠處建立一個監聽服務,正真傳輸資料的對象是socket對象。
ServerSocket 一般僅用於設定連接埠號碼和監聽,真正進行通訊的是伺服器端的Socket與用戶端的Socket,在ServerSocket 進行accept之後,就將主動權轉讓了。
詳細請看:http://www.cnblogs.com/mareymarey111/archive/2011/12/08/2280253.html
二、UDP協議(傳輸層協議)
UDP協議全稱是使用者資料包通訊協定 ,在網路中它與TCP協議一樣用於處理資料包,是一種不需連線的協議。在OSI模型中,在第四層——傳輸層,處於IP協議的上一層。UDP有不提供資料包分組、組裝和不能對資料包進行排序的缺點,也就是說,當報文發送之後,是無法得知其是否安全完整到達的。UDP用來支援那些需要在電腦之間傳輸資料的網路應用。包括網路視頻會議系統在內的眾多的客戶/伺服器模式的網路應用都需要使用UDP協議。UDP協議從問世至今已經被使用了很多年,雖然其最初的光彩已經被一些類似協議所掩蓋,但是即使是在今天UDP仍然不失為一項非常實用和可行的網路傳輸層協議。
UDP協議的主要作用是將網路資料流量壓縮成資料包的形式。一個典型的資料包就是一個位元據的傳輸單位。每一個資料包的前8個位元組用來包含前序資訊,剩餘位元組則用來包含具體的傳輸資料。
為了在給定的主機上能識別多個目的地址,同時允許多個應用程式在同一台主機上工作並能獨立地進行資料包的發送和接收,設計使用者資料包通訊協定UDP。
使用UDP協議包括:TFTP、SNMP、NFS、DNS、BOOTP
UDP使用底層的互連網協議來傳送報文,同IP一樣提供不可靠的無串連資料包傳輸服務。它不提供報文到達確認、排序、及流量控制等功能。
1、DatagramSocket與DatagramPackage
DatagramSocket代表UDP協議的Socket,DatagramSocket本身只是碼頭,不維護狀態,不能產生IO流,它的唯一作用就是接收和發送資料報,
詳細解釋請看:http://blog.csdn.net/jiangxinyu/article/details/8161044
DatagramPacket來代表資料報,DatagramSocket接收和發送的資料都是通過DatagramPacket對象完成的。
詳細解釋請看:http://blog.csdn.net/oney139/article/details/8063067
三、HTTP協議(應用程式層協議)
HTTP協議是一種應用程式層協議,HTTP是HyperText Transfer Protocol(超文字傳輸通訊協定 (HTTP))的英文縮寫。HTTP可以通過傳輸層的TCP協議在用戶端和伺服器之間傳輸資料。HTTP協議主要用於Web瀏覽器和Web伺服器之間的資料交換。我們在使用IE或Firefox瀏覽網頁或下載Web資源時,通過在地址欄中輸入http://host:port/path,開頭的4個字母http就相當於通知瀏覽器使用HTTP協議來和host所確定的伺服器進行通訊。
詳細請看:http://blog.csdn.net/xijiaohuangcao/article/details/6729277
在Android中使用JDK的HttpURLConnection和Apache的HttpClient訪問網路資源
1、HttpURLConnection
Java 應用程式需要直接通過 HttpURLConnection類來訪問指定url地址的網路資源,提供了post和get的方法。
詳情解釋請看:http://blog.csdn.net/loovejava/article/details/12950129
2、HttpClient(Google整合了Apache HTTP協議)
Android中,androidSDK中整合了Apache的HttpClient模組,用來提供高效的、最新的、功能豐富的支援 HTTP 協議工具包,並且它支援 HTTP 協議最新的版本和建議。
詳情解釋請看:http://blog.csdn.net/litton_van/article/details/6544086
HttpURLConnection與httpClient的區別在於httpClient封裝好了http協議請求的方法和模組,快速整合方便。詳解:http://blog.csdn.net/micaixiaoduanku/article/details/39958615
三、Android調用webService通訊
Web Services(Web服務)是一個用於支援網路間不同機器互操作的軟體系統,它是一種自包含、自描述和模組化的應用程式,它可以在網路中被描述、發布和調用,可以將它看作是基於網路的、分布式的模組化組件。
Web Services是建立在通用協議的基礎之上,如HTTP、SOAP、UDDI、WSDL等,這些協議在作業系統、程式設計語言和物件模型的選擇上沒有任何傾向,因此有著很強的生命力。
Web Services的優勢在於提供了不同應用程式平台之間的互操作,它使得基於組件的開發和Web相結合的效果達到最佳。它是基於HTTP協議的,調用請求和回應訊息都可以穿過防火牆,不需要更改防火牆的設定,這樣就避免了使用特殊連接埠進行通訊時無法穿越防火牆的問題。
簡單的說:通過使用WebService,我們能夠像調用本地方法一樣去調用遠程伺服器上的方法。我們並不需要關心遠端那個方法是Java寫的,還是PHP或C#寫的;我們並不需要關心遠端方法是基於Unix平台,還是Windows平台,也就是說WebService與平台和語言無關。
Android調用webservice主要有:SOAP協議和 WSDL協議
1、SOAP協議
SOAP(Simple Object Access Protocol,簡易物件存取通訊協定 (SOAP))是一種輕量級的、簡單的、基於XML的協議,被設計用於在分布式環境中交換格式化和固化資訊的簡單協議。也就是說,要進行通訊,進行資料訪問傳輸,就必須依賴於一定的協議,而SOAP正是WebService通訊中所依賴的一種協議。目前經常使用的SOAP協議有兩個版本:SOAP 1.1 和 SOAP 1.2。
注意的是:Android使用soap協議調用webservice的時候,調用的是伺服器的方法,傳的參數要按順序傳,配置的版本號碼也要正確,讀者可自行參考詳解做。見附件
詳細使用:http://blog.csdn.NET/long704480904/article/details/8636734
2、WSDL協議
WSDL(Web Services Description Language,即Web服務描述語言)是一種用來描述Web服務的XML語言,它描述了Web服務的功能、介面、參數、傳回值等,便於使用者綁定和調用服務。它以一種和具體語言無關的方式定義了給定Web服務調用和應答的相關操作和訊息。
詳細使用:http://blog.csdn.net/howlaa/article/details/21237331
四、Android使用webview調用伺服器
直接使用WebView視圖組件顯示網頁。基於WebView 進行開發,Google已經提供了一個基於chrome-lite的Web瀏覽器,直接就可以進行上網瀏覽網頁。