Java網絡編程
1
、計算機網絡的概念
計算機網絡就是
通訊線路與
通訊設備將分佈在
不一樣地點的具備
獨立功能的多個計算機系統互相鏈接起來,在
網絡軟件的支持下實現彼此之間的
數據通訊和
資源共享的系統。
二、計算機網絡的劃分
(1)按地理位置劃分:廣域網、局域網、城域網
(2)按拓撲結構劃分:星形、總線形、環形
(3)按傳輸介質劃分:同軸電纜網、雙絞線網、光纖網、衛星網、無線網
(4)按通訊協議劃分:以太網(CSMA/CD協議)、令牌環網(令牌環協議)、Internet網(TCP/IP協議)
(5)按寬帶速率劃分:低速網、中速網、高速網
三、網絡編程的架構
幾種經常使用的Android網絡框架:
(1)android_async_http: HTTP請求發生在UI線程以外,自動智能請求重試,優化了質量不一的移動鏈接,自動解碼支持gzip反應速度超快的請求,持久化cookie存儲,保存cookie到你的應用程序的SharedPreferences。
(2)http_request: 在小型的項目上性能表現最好,若是你的項目不是很大,這個框架是一個不錯的選擇。
(3)okhttp: 使用 OkHttp 無需重寫你程序中的網絡代碼。OkHttp實現了幾乎和java.net.HttpURLConnection同樣的API。若是你用了 Apache HttpClient,則OkHttp也提供了一個對應的okhttp-apache 模塊
。
(4) retrofit: 是一個類型安全的 REST 客戶端。
(5)Netroid: 一個基於
Volley 實現的Android Http庫。提供執行網絡請求、緩存返回結果、批量圖片加載、大文件斷點下載的常見Http交互功能。致力於避免每一個項目重複開發基礎Http功能,實現顯著地縮短開發週期的願景。
網絡分層
網絡分層就是將網絡節點所要完成的數據的發送或轉發、打包或拆包、控制信息的加載或拆出等工做,分別由不一樣的硬件和軟件模塊去完成.這樣能夠將往來通訊和網絡互連這一複雜的問題變得較爲簡單.
OSI(Open System Interconnection),即開放式系統互聯。
ISO提出的OSI(Open System Interconnection)模型將網絡分爲七層,即物理層( Phisical )、數據鏈路層(Data Link)、網絡層(Network)、傳輸層(Transport)、會話層(Session)、表示層(Presentation)和應用層(Application).
五、
什麼是網絡編程?
網絡編程:使用編程語言實現多臺計算機的通訊。java
六、網絡編程三要素
(3)協議:
用生活中的例子說明:假如我要和小明說話,首先我要到小明的住址找到小明(至關於經過IP找到指定計算機);以後我要和小明說話,小明用耳朵聽我說(至關於用端口接收);而咱們對話不能使用鳥語,須要做出規定彼此都要使用都能聽懂的普通話(這就是協議的做用了)。
IP地址
由四個字節32位的數字組成(ps:192.168.1.1),在InetAddress獲取ip地址和主機名,127.0.0.l 和localhost都表示本機地址。
端口
0~1024是系統程序的端口號(ps:80 網絡端口)因此在寫本身程序的時候使用端口號應該是:1024~65535
協議
TCP
面向鏈接,三次握手
安全性高,效率低
TCP協議發送數據是沒有大小限制的
UDP
無鏈接協議
安全性低,效率高
UDP協議發送數據的時候,用的是數據報包的形式。大小是在64KB之內
Socket 套接字
網絡上具備惟一標識的IP地址和端口組合在一塊兒才能構成惟一能識別的標識符套接字。
Socket原理機制:
一、通訊的兩端都有Socket
二、網絡通訊其實就是Socket間的通訊
三、數據在兩個Socket間經過IO傳輸
七、Java中的網絡支持apache
針對網絡通訊的不一樣層次,Java提供了不一樣的API,其提供的網絡功能有四大類:編程
InetAddress:用於標識網絡上的硬件資源,主要是IP地址緩存
URL:統一資源定位符,經過URL能夠直接讀取或寫入網絡上的數據安全
Sockets:使用TCP協議實現的網絡通訊Socket相關的類服務器
Datagram:使用UDP協議,將數據保存在用戶數據報中,經過網絡進行通訊
UDP協議的通訊
:
發送端:
一、創建DatagramSocket對象
二、將數據封裝到數據包中
三、發送數據包
四、關閉資源
接收端:
一、創建DatagramSocket對象
二、定義一個空的數據包
三、接受數據包
四、解析數據包
五、關閉資源
TCP協議的通訊 (C/S模式、Socket套接字)
服務端:
一、
建立ServerSocket對象,綁定監聽端口
二、
經過accept()方法監聽客戶端請求,等待客戶端的鏈接,返回一個Socket對象
三、
鏈接創建後,經過輸入流向接收客服端端發送請求信息
四、 經過輸入出流返回服務器響應的信息
五、關閉資源
客戶端:
一、創建Socket對象,
指明須要鏈接的服務器的地址和端口號
二、
鏈接創建後,經過輸出流向服務器端發送請求信息
三、 經過輸入流獲取服務器響應的信息
四、關閉資源