Android中通信協議

来源:http://www.cnblogs.com/wuyudong/archive/2016/11/09/6048899.html
-Advertisement-
Play Games

一、TCP/IP協議(傳輸層協議) 1、Socket與ServerSocket Socket是應用層與TCP/IP協議簇通訊的中間抽象層,Socket是一組介面,在設計模式中,Socket的設計就是門面模式,它把複雜的TCP/IP協議簇的內容隱藏在套接字介面後面,用戶無需關心協議的實現,只需使用So ...


一、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可以通過傳輸層的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,簡單對象訪問協議)是一種輕量級的、簡單的、基於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瀏覽器,直接就可以進行上網瀏覽網頁。  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 廣播是一種廣泛運用的在應用程式之間傳輸信息的機制,Android 為了將系統運行時的各種“事件”通知給其他應用,因此內置了多種廣播。廣播機制最大的特點就是發送方並不關心接收方是否接到數據,也不關心接收方是如何處理數據的。Android 中的每個應用程式都可以對自己感興趣的廣播進行註冊,這樣該程式就只 ...
  • Cocoapods是ios第三方類庫集成管理工具,它能讓你不需任何配置集成git上所有類庫,並且方便管理,讓你的ios項目看起來不那麼混亂, 安裝這個工具後,過段時間也許你突然會發現它的指令無法使用了,這問題與IOS系統升級有關係,也許當你把mac os系統升級到官方纔出的版本,會突然發現它無法使用 ...
  • 如果直接在TableVIewController上貼Button的話會導致這個會隨之滾動,下麵解決在TableView上實現位置固定懸浮按鈕的兩種方法: 1.在view上貼tableView,然後將懸浮按鈕貼在view的最頂層 2.使用window 首先看一下最終的效果,在tableViewCont ...
  • 在實際的Android開發過程中,我們遇到了一些奇奇怪怪的Crash,通過sigaction再配合libcorkscrew以及一些第三方的Crash Reporter都捕獲不到發生Crash的具體信息,十分頭疼。然後我們通過Bugly上報的Java的CallStack觀察發現這些Crash發現了一些 ...
  • 前言: 雖說網上有太多的Android課程,但是大多都是視頻,有Android線上開發環境的幾乎沒有,但是對於學習Android的人來說擁有線上的Android開發環境是非常好的,可以隨時動手操作學習Android開發,及時瞭解自己的掌握情況! 實驗樓就提供了Android線上開發環境,你不需要本地 ...
  • const,static,extern 簡介 一、const與巨集的區別: const簡介:之前常用的字元串常量,一般是抽成巨集,但是蘋果不推薦我們抽成巨集,推薦我們使用const常量。 執行時刻:巨集是預編譯 ( 編譯之前處理 ),const是編譯階段。 編譯檢查:巨集不做檢查,不會報編譯錯誤,只是替換,c ...
  • Weex 是什麼 Weex是阿裡發佈的一款用WEB方式開發原生app的開源產品 Weex能夠完美兼顧性能與動態性,讓移動開發者通過簡捷的前端語法寫出Native級別的性能體驗,並支持iOS、安卓、YunOS及Web等多端部署。對於移動開發者來說,Weex主要解決了頻繁發版和多端研發兩大痛點,同時解決 ...
  • 大家都知道如果手機只有一個活動的應用,那這個應用也太簡單了吧。如同網頁一下,是有多個組成的,在C#中我們可以使用各程skip控制項或代碼,這裡不再贅述。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...