標籤:android 網路編程 net java.net 介面
Android 網路編程相關的包 : 9 包, 20 介面, 103 類, 6 枚舉, 14異常;
-- Java包 : java.net 包 (6介面, 34類, 2枚舉, 12異常);
-- Android包 : android.net 包 (1介面, 19類, 3枚舉, 1異常), android.net.http 包 (6類), android.net.nsd 包 (3介面, 2類), android.net.rtp (4類), android.net.sip 包 (1介面, 9類, 1異常), android.net.wifi 包 (16類, 1枚舉), android.net.wifi.p2p 包 (9介面, 7類), android.net.wifi.p2p.nsd 包 (6類);
ContentHandlerFactory : 該介面定義內容處理常式工廠;
DatagramSocketImplFactory : 該介面定義使用者資料報實現工廠;
FileNameMap : 定義了 檔案名稱 和 MIME Type 字串之間的映射 機制 的介面;
SocketImplFactory : 定義 通訊端 實現 工廠;
SocketOptions : 定義 擷取 設定 通訊端選項的 方法 的介面;
URLStreamHandlerFactory : 定義 URL 流通訊協定處理常式 工廠;
1. ContentHandlerFactory
作用 : 定義內容處理常式工廠, 該介面的實作類別 負責 將 MIME 類型映射到 ContentHandler 執行個體對象中;
MIME 解析 :
-- 副檔名 : Multipurpose Internet Mail Extentions 多用途互連網郵件擴充類型;
-- 作用 : 設定 A 副檔名的檔案 使用 B 程式開啟, 當 A 副檔名檔案被訪問到的時候, 瀏覽器會自動 調用 B 程式開啟這個 A 副檔名檔案;
-- 使用形式 : 多用於關聯 自訂的檔案尾碼檔案開啟檔案 和 媒體檔案開啟檔案;
介面使用環境 : URLStreamHandler 使用此介面實現的方法 建立 MIME Type 的 ContentHandler;
介面方法解析 :
ContentHandler createContentHandler(String mimetype)
--
作用 : 建立 新的ContentHandler, 該 ContentHandler 可以從 URLStreamHandler 中讀取對象;
2. DatagramSocketImplFactory
作用 : 定義用於資料包通訊端實現的工廠;
介面使用環境 : DatagramSocket 使用該介面的方法 建立 通訊端執行個體;
介面方法解析 :
DatagramSocketImpl createDatagramSocketImpl()
--
作用 : 建立 DatagramSocketImpl 執行個體對象;
3. FileNameMap
作用 : 檔案名稱 與 MIME Type 字串 之間的映射 所需的介面;
介面方法解析 :
String getContentTypeFor(String fileName)
--
作用 : 擷取指定檔案名稱的 MIME Type 字串;
4. SocketImplFactory
作用 : 用於定義通訊端實現工廠;
使用環境 : Socket 和 ServerSocket 使用該介面定義的方法 來建立通訊端執行個體;
方法解析 :
SocketImpl createSocketImpl()
--
作用 : 建立新的通訊端執行個體;
5. SocketOptions
作用 : 定義了 設定 擷取 通訊端 選項的方法;
介面使用環境 : SocketImpl 和 DatagramSocketImpl 實現了該介面, 這兩個類的子類應該重寫該介面, 用以支援兩個類的子類的選項;
(1) 常量欄位解析
IP_MULTICAST_IF : 設定一個用於發送多播包的傳出介面(eth0, eth1, wlan0 等);
-- 使用環境 : 可以在具有多個網路介面的主機上使用, 一般這種情況下應用程式 不使用系統預設的介面, 而使用其它介面;
IP多播 : 一台主機 (多播源) 同時發送 同一資料到多台主機;
IP-MULTICAST_IF2 : 與 IP_MULTICAST_IF 作用相同, 但是添加了 對 IPv4 IPv6 的支援, 該常量從 1.4 版本 開始支援;
IF_MULTICAST_LOOP : 用於 啟動 或 禁用 多播資料報會送, 預設狀態是啟動;
IP_TOS : 在 IP 位址頭 中設定 TCP UDP 資料報的 服務類型 或者 流量欄位;
TOS (Type Of Service) : 在網路中區分包的優先順序, 單位元組, 下面是常用的常量 服務類型;
-- IPTOS_LOWDELAY : 延遲最小化;
-- IPTOS_THROUGHPUT : 最佳化輸送量;
-- IPTOS_RELIABILITY : 可靠性最佳化;
-- IPTOS_MINCOST : 填充資料, 這些資料可以低速傳送, 無關緊要;
SO_BINDADDR : 擷取綁定通訊端的本地地址;
-- 通訊端本地地址不可更改 : 通訊端在建立的時候綁定本地地址, 因此不可更改;
-- 通訊端預設地址 : INADDR_ANY 表示 多穴主機 (有多個IP地址的主機) 的任何地址;
SO_REUSEADDR : 僅用於 MulticastSocket, 預設情況下MulticastSocket 設定了該選項, 對 DatagramSocketImpl 有效;
SO_BROADCAST : 啟動 禁用 發送廣播訊息的 處理能力;
-- 使用情境 : 資料通訊端, 支援廣播訊息概念的網路;
-- 預設設定 : DatagramSocket 預設啟動該選項;
SO_KEEPALIVE : TCP 通訊端設定了該選項, 2小時內 沒有通過 Socket 傳輸資料, TCP 會將 keepalive 探頭 發送到同為體中;
-- 作用 : 檢測同位體主機是否崩潰;
-- 適用情況 : 僅對 TCP 通訊端有效;
-- 同位體通到期待的ACK響應 : 不通知應用程式, 在另外2小時 沒有資料轉送之後, TCP 繼續發送一個探頭;
-- 同位體通過 RST 響應 : 通知本地 TCP 同位體主機 崩潰, 關閉socket 重啟主機;
-- 同位體無響應 : 直接關閉通訊端;
SO_LINGER : 關閉逗留的逾時值, 即 在 TCP Socket 執行 close 之後, 等待的時間;
-- 啟用 非0 逾時值 : close() 之後, 在傳輸 和 確認讀寫完畢之前 一直阻塞, 如果逾時就會 通過 TCP RST 強制關閉;
-- 啟用 0 逾時值 : close() 之後會強制關閉, 不會進行任何等待;
SO_OOBINLINE : 是否丟棄 socket 接收的 tcp 緊急資料;
-- 啟動選項 : socket 接收的 tcp 緊急資料 都通過 socket 輸入資料流接收;
-- 禁用選項 : 接收的 tcp 緊急資料 直接丟棄;
SO_RCVBUF (receive) : 設定 網路 輸入 的緩衝區大小;
-- 設定方法使用 : 設定通過通訊端 接收資料 時使用的緩衝區的大小;
-- 擷取方法使用 : 擷取通訊端設定的 接收資料 緩衝區大小;
-- 適用情況 : SocketImpl , DatagramSocketImpl;
SO_SNDBUF (send): 設定 網路 輸出 的 用到的基礎的IO緩衝區大小提示;
-- 設定方法使用 : 設定通過通訊端 發送資料 時使用的緩衝區的大小;
-- 擷取方法使用 : 擷取通訊端設定的 發送資料 緩衝區大小;
-- 適用情況 : SocketImpl , DatagramSocketImpl;
SO_TIMEOUT : 設定 Socket 阻塞的 逾時值;
-- 逾時的操作 : ServerSocket.accept(), SocketInputStream.read(), DatagramSocket.receive();
-- 設定時機 : 該選項必須在進入阻塞前設定才有效, 如果是阻塞的狀態, 設定將不會對本次阻塞生效;
-- 逾時處理 : 如果出現逾時, 阻塞會繼續執行, 但是會引發 InterruptedIOException 異常, Socket 不會關閉;
-- 適用情況 : 該設定對所有的通訊端 ( SocketImpl, DatagramSocketImpl ) 有效;
TCP_NODELAY : 設定該參數的連結禁用 nagle 演算法;
Nagle演算法解析 : 減少發包個數, 用於增加網路軟體的效率, 避免 一個包只有 1位元組, 卻使用了 40個位元組的標頭檔的情況;
(2) 介面方法詳解
void setOption(int optID, Object value) throws SocketException
--
作用 : 啟用 / 禁用 指定選項, 如果啟用, 將會採用 value 選項;
-- 選項傳入錯誤 : 如果傳入的 value 格式不正確, 會發生錯誤;
-- 傳入基礎資料型別 (Elementary Data Type) : 使用 Integer Boolean 等封裝;
-- 禁用選項 : 傳入 new Boolean(false) 可以禁用任何選項, 如果傳入其它內容 都會啟用該選項;
-- 異常 : 如果選項匹配錯誤, 或者 socket 關閉 等錯誤, 就會報出 SocketException 異常;
Object getOption(int optID) throws SocketException
--
作用 : 擷取選項的值;
6. URLStreamHandlerFactory
介面作用 : 定義了 URL 流通訊協定處理常式的工廠, URL 類實現該介面 為特定的協議建立 URLStreamHandler;
createURLStreamHandler URLStreamHandler createURLStreamHandler(String protocol)
--
作用 : 建立具有指定協議的新的 URLStreamHandler執行個體;
,