【Android 应用开发】Android 网络编程 API笔记 - java.net 包相关 接口 api
Android 網(wǎng)絡(luò)編程相關(guān)的包 : 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 : 該接口定義內(nèi)容處理程序工廠;
DatagramSocketImplFactory : 該接口定義用戶數(shù)據(jù)報(bào)實(shí)現(xiàn)工廠;
FileNameMap : 定義了 文件名 和 MIME Type 字符串之間的映射 機(jī)制 的接口;
SocketImplFactory : 定義 套接字 實(shí)現(xiàn) 工廠;
SocketOptions : 定義 獲取 設(shè)置 套接字選項(xiàng)的 方法 的接口;
URLStreamHandlerFactory : 定義 URL 流協(xié)議處理程序 工廠;
1. ContentHandlerFactory
作用 : 定義內(nèi)容處理程序工廠, 該接口的實(shí)現(xiàn)類 負(fù)責(zé) 將 MIME 類型映射到 ContentHandler 實(shí)例對(duì)象中;
MIME 解析 :?
-- 擴(kuò)展名 : Multipurpose Internet Mail Extentions 多用途互聯(lián)網(wǎng)郵件擴(kuò)展類型;?
-- 作用 : 設(shè)定 A 擴(kuò)展名的文件 使用 B 程序打開, 當(dāng) A 擴(kuò)展名文件被訪問到的時(shí)候, 瀏覽器會(huì)自動(dòng) 調(diào)用 B 程序打開這個(gè) A 擴(kuò)展名文件;?
-- 使用形式 : 多用于關(guān)聯(lián) 自定義的文件后綴文件打開方式 和 媒體文件打開方式;
接口使用環(huán)境?: URLStreamHandler 使用此接口實(shí)現(xiàn)的方法 創(chuàng)建 MIME Type 的 ContentHandler;
接口方法解析 :
ContentHandler createContentHandler(String mimetype)-- 作用 : 創(chuàng)建 新的ContentHandler, 該 ContentHandler 可以從 URLStreamHandler 中讀取對(duì)象;?
2. DatagramSocketImplFactory
作用 : 定義用于數(shù)據(jù)包套接字實(shí)現(xiàn)的工廠;
接口使用環(huán)境 : DatagramSocket 使用該接口的方法 創(chuàng)建 套接字實(shí)例;
接口方法解析 :?
DatagramSocketImpl createDatagramSocketImpl()-- 作用 : 創(chuàng)建 DatagramSocketImpl 實(shí)例對(duì)象;
3. FileNameMap
作用 : 文件名稱 與 MIME Type 字符串 之間的映射 所需的接口;
接口方法解析 :?
String getContentTypeFor(String fileName)-- 作用 : 獲取指定文件名的 MIME Type 字符串;
4. SocketImplFactory
作用 : 用于定義套接字實(shí)現(xiàn)工廠;
使用環(huán)境 : Socket 和 ServerSocket 使用該接口定義的方法 來(lái)創(chuàng)建套接字實(shí)例;
方法解析 :?
SocketImpl createSocketImpl()-- 作用 : 創(chuàng)建新的套接字實(shí)例;
5. SocketOptions
作用 : 定義了 設(shè)置 獲取 套接字 選項(xiàng)的方法;
接口使用環(huán)境 : SocketImpl 和 DatagramSocketImpl 實(shí)現(xiàn)了該接口, 這兩個(gè)類的子類應(yīng)該重寫該接口, 用以支持兩個(gè)類的子類的選項(xiàng);
(1) 常量字段解析??
IP_MULTICAST_IF : 設(shè)置一個(gè)用于發(fā)送多播包的傳出接口(eth0, eth1, wlan0 等);?
-- 使用環(huán)境 : 可以在具有多個(gè)網(wǎng)絡(luò)接口的主機(jī)上使用, 一般這種情況下應(yīng)用程序 不使用系統(tǒng)默認(rèn)的接口, 而使用其它接口;?
IP多播 : 一臺(tái)主機(jī) (多播源) 同時(shí)發(fā)送 同一數(shù)據(jù)到多臺(tái)主機(jī);
IP-MULTICAST_IF2 : 與 IP_MULTICAST_IF 作用相同, 但是添加了 對(duì) IPv4 IPv6 的支持, 該常量從 1.4 版本?開始支持;
IF_MULTICAST_LOOP : 用于 啟動(dòng) 或 禁用 多播數(shù)據(jù)報(bào)會(huì)送, 默認(rèn)狀態(tài)是啟動(dòng);
IP_TOS : 在 IP 地址頭 中設(shè)置 TCP UDP 數(shù)據(jù)報(bào)的 服務(wù)類型 或者 流量字段;
TOS (Type Of Service) : 在網(wǎng)絡(luò)中區(qū)分包的優(yōu)先級(jí), 單字節(jié), 下面是常用的常量 服務(wù)類型;
-- IPTOS_LOWDELAY : 延遲最小化;
-- IPTOS_THROUGHPUT : 優(yōu)化吞吐量;
-- IPTOS_RELIABILITY : 可靠性優(yōu)化;
-- IPTOS_MINCOST : 填充數(shù)據(jù), 這些數(shù)據(jù)可以低速傳送, 無(wú)關(guān)緊要;
SO_BINDADDR : 獲取綁定套接字的本地地址;?
-- 套接字本地地址不可更改 : 套接字在創(chuàng)建的時(shí)候綁定本地地址, 因此不可更改;
-- 套接字默認(rèn)地址 : INADDR_ANY 表示 多穴主機(jī) (有多個(gè)IP地址的主機(jī)) 的任何地址;
SO_REUSEADDR : 僅用于 MulticastSocket, 默認(rèn)情況下MulticastSocket 設(shè)置了該選項(xiàng), 對(duì) DatagramSocketImpl 有效;
SO_BROADCAST : 啟動(dòng) 禁用 發(fā)送廣播消息的 處理能力;
-- 使用場(chǎng)景 : 數(shù)據(jù)報(bào)套接字, 支持廣播消息概念的網(wǎng)絡(luò);
-- 默認(rèn)設(shè)置 : DatagramSocket 默認(rèn)啟動(dòng)該選項(xiàng);?
SO_KEEPALIVE : TCP 套接字設(shè)置了該選項(xiàng), 2小時(shí)內(nèi) 沒有通過 Socket 傳輸數(shù)據(jù), TCP 會(huì)將 keepalive 探頭 發(fā)送到同為體中;
-- 作用 : 檢測(cè)同位體主機(jī)是否崩潰;
-- 適用情況 : 僅對(duì) TCP 套接字有效;
-- 同位體通過期待的ACK響應(yīng) : 不通知應(yīng)用程序, 在另外2小時(shí) 沒有數(shù)據(jù)傳輸之后, TCP 繼續(xù)發(fā)送一個(gè)探頭;
-- 同位體通過 RST 響應(yīng) : 通知本地 TCP 同位體主機(jī) 崩潰, 關(guān)閉socket 重啟主機(jī);
-- 同位體無(wú)響應(yīng) : 直接關(guān)閉套接字;
SO_LINGER : 關(guān)閉逗留的超時(shí)值, 即 在 TCP Socket 執(zhí)行 close 之后, 等待的時(shí)間;
-- 啟用 非0 超時(shí)值 : close() 之后, 在傳輸 和 確認(rèn)讀寫完畢之前 一直阻塞, 如果超時(shí)就會(huì) 通過 TCP RST 強(qiáng)制關(guān)閉;
-- 啟用 0 超時(shí)值 : close() 之后會(huì)強(qiáng)制關(guān)閉, 不會(huì)進(jìn)行任何等待;
SO_OOBINLINE : 是否丟棄 socket 接收的 tcp 緊急數(shù)據(jù);
-- 啟動(dòng)選項(xiàng) : socket 接收的 tcp 緊急數(shù)據(jù) 都通過 socket 輸入流接收;
-- 禁用選項(xiàng) : 接收的 tcp 緊急數(shù)據(jù) 直接丟棄;
SO_RCVBUF (receive) : 設(shè)置 網(wǎng)絡(luò) 輸入 的緩沖區(qū)大小;
--?設(shè)置方法使用?: 設(shè)置通過套接字 接收數(shù)據(jù) 時(shí)使用的緩沖區(qū)的大小;
--?獲取方法使用?: 獲取套接字設(shè)置的 接收數(shù)據(jù) 緩沖區(qū)大小;
--?適用情況?: SocketImpl , DatagramSocketImpl;
SO_SNDBUF (send): 設(shè)置 網(wǎng)絡(luò) 輸出 的 用到的基礎(chǔ)的IO緩沖區(qū)大小提示;
-- 設(shè)置方法使用 : 設(shè)置通過套接字 發(fā)送數(shù)據(jù) 時(shí)使用的緩沖區(qū)的大小;
-- 獲取方法使用 : 獲取套接字設(shè)置的 發(fā)送數(shù)據(jù) 緩沖區(qū)大小;
-- 適用情況 : SocketImpl , DatagramSocketImpl;
SO_TIMEOUT : 設(shè)置 Socket 阻塞的 超時(shí)值;
-- 超時(shí)的操作 : ServerSocket.accept(), SocketInputStream.read(), DatagramSocket.receive();
-- 設(shè)置時(shí)機(jī) : 該選項(xiàng)必須在進(jìn)入阻塞前設(shè)置才有效, 如果是阻塞的狀態(tài), 設(shè)置將不會(huì)對(duì)本次阻塞生效;
-- 超時(shí)處理 : 如果出現(xiàn)超時(shí), 阻塞會(huì)繼續(xù)執(zhí)行, 但是會(huì)引發(fā) InterruptedIOException 異常, Socket 不會(huì)關(guān)閉;
-- 適用情況 : 該設(shè)置對(duì)所有的套接字 ( SocketImpl, DatagramSocketImpl ) 有效;
TCP_NODELAY : 設(shè)置該參數(shù)的鏈接禁用 nagle 算法;?
Nagle算法解析 : 減少發(fā)包個(gè)數(shù), 用于增加網(wǎng)絡(luò)軟件的效率, 避免 一個(gè)包只有 1字節(jié), 卻使用了 40個(gè)字節(jié)的頭文件的情況;
(2) 接口方法詳解?
-- 選項(xiàng)傳入錯(cuò)誤 : 如果傳入的 value 格式不正確, 會(huì)發(fā)生錯(cuò)誤;
-- 傳入基本數(shù)據(jù)類型 : 使用 Integer Boolean 等封裝;
-- 禁用選項(xiàng) : 傳入 new Boolean(false) 可以禁用任何選項(xiàng), 如果傳入其它內(nèi)容 都會(huì)啟用該選項(xiàng);
-- 異常 : 如果選項(xiàng)匹配錯(cuò)誤, 或者 socket 關(guān)閉 等錯(cuò)誤, 就會(huì)報(bào)出 SocketException 異常;
Object getOption(int optID) throws SocketException-- 作用 : 獲取選項(xiàng)的值;
6. URLStreamHandlerFactory
接口作用 : 定義了 URL 流協(xié)議處理程序的工廠, URL 類實(shí)現(xiàn)該接口 為特定的協(xié)議創(chuàng)建 URLStreamHandler;
createURLStreamHandler URLStreamHandler createURLStreamHandler(String protocol)-- 作用 : 創(chuàng)建具有指定協(xié)議的新的 URLStreamHandler實(shí)例;
,
總結(jié)
以上是生活随笔為你收集整理的【Android 应用开发】Android 网络编程 API笔记 - java.net 包相关 接口 api的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【嵌入式开发】gcc 学习笔记(一) -
- 下一篇: 【Android 应用开发】Androi