日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

【Android 应用开发】Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简介

發布時間:2025/6/17 Android 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android 应用开发】Android 网络编程 API笔记 - 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類);



一. 權限相關類


1. Authenticator


類的全名稱?:?

public abstract class Authenticator extends Object

-- 作用 : 獲取網絡鏈接驗證對象;

-- 使用方法 : 當需要獲取一個帶 口令 保護的文件的時候, 需要使用 用戶名 和 密碼 才能獲取該文件的輸入流, 如果遇到這種情況, 提示用戶輸入用戶名 密碼獲取文件;


使用流程

1> 獲取用戶名密碼

關鍵方法 :?

protected PasswordAuthentication getPasswordAuthentication()-- 重寫方法 : 重寫該方法, 在該方法中調用 該類中的其它方法, 獲取關于請求驗證的信息;?

-- 用戶輸入 : 然后寫一個 用戶名密碼輸入框, 彈出該輸入框, 通過用戶輸入獲取用戶名密碼;

-- 返回結果 : 根據用戶輸入的 口令 密碼 以及上面獲取的請求驗證信息, 返回 PasswordAuthentication 對象;


2> 驗證


驗證流程 : -- 注冊驗證類實例 : 調用 setDefault(Authenticator) 方法向系統注冊實例; -- 驗證 : 調用 requestPasswordAuthentication()方法;

public static void setDefault(Authenticator a)-- 作用 : 設置 代理 或者 HTTP服務器 請求校驗時 密碼使用的 authenticator;?


public static PasswordAuthentication requestPasswordAuthentication(InetAddress addr,int port,String protocol,String prompt,String scheme)-- 作用 : 要求向系統注冊的 authemticator 提供密碼;

-- 參數 : addr 請求授權站點的 InetAddress, port 請求鏈接端口, protocol 請求連接的協議, prompt 用戶提示的字符串, scheme 驗證方案;



2. PasswordAuthentication


類的全名稱?:?

public final class PasswordAuthentication extends Object -- 作用 : 該類保存 Authenticator 使用的 用戶名 和 密碼;


構造方法 :?

public PasswordAuthentication(String userName, char[] password)-- 用法 : 根據傳入的用戶名 和 密碼創建 PasswordAuthentication 對象;


獲取用用戶名密碼的方法 :?

-- 獲取用戶名方法 :?public String getUserName() ;

-- 獲取密碼方法 :?public char[] getPassword() ;



3. NetPermission


類的全名稱 :?

public final class NetPermission extends BasicPermission-- 作用 : 用于各種網絡權限, 包含一個名稱, 沒有動作列表;


權限解析 : 每個權限都有一個權限名稱, 所允許的操作, 以及對應的風險;

-- setDefaultAuthenticator : 設置代理 或 HTTP 服務器請求驗證, 獲取驗證信息的方式;

-- requestPasswordAuthentication : 設置 在系統中注冊的 authenticator 可以提供密碼;

-- specifyStreamHandler : 構造 URL 時指定流處理程序;

-- setProxySelector : 設置 建立網絡連接時使用代理的 代理選擇器;

-- getProxySelector : 獲取 建立網絡連接時使用代理的 代理選擇器;

-- setCookieHandler : 設置 HTTP會話處理高度安全敏感的cookie 的 cookie 處理程序;

-- getCookieHandler : 獲取 HTTP會話處理高度安全敏感的cookie 的 cookie 處理程序;

-- setResponseCache : 設置 本地響應緩存的訪問權限;

-- getResponseCache : 獲取 本地響應緩存的訪問權限;

.



二. 地址相關類?


1. InetAddress


類的全名稱?:?

public class InetAddress extends Object implements Serializable

作用 : 代表 IP 地址;

IP地址層級 : IP地址是一種低級的協議, UDP 和 TCP 都是在這個協議的基礎上構建;


IP地址類型 :?

-- 單播地址 : 用于當作單個接口標識符, 發送到單播地址的數據包 被發送到 由該地址標識的接口;

-- 多播地址 : 用于當作一組接口的標識符, 發送到多播地址的數據包被交付給由地址標識的所有接口;

-- 回送地址 : 分配給回送接口的地址, 發送到回送地址的任何內容, 都將當作本地主機的IP輸入, 通常在測試客戶機的時候使用這種類型的地址;


多播地址的注意事項 : 不能將多播地址分配給任何節點, 它是 anylocal 地址 或者 通配符地址, 服務器主機有多個接口的情況下接收任何接口上的客戶端鏈接;


IP地址范圍 :?

-- 鏈接本地地址 : 在單個鏈接上尋址, 以解決諸如自動地址配置, 鄰居發現, 或者沒有路由器的問題;?

-- 站點本地地址 : 不許要全局前綴時, 站點內部尋址;?

-- 全局地址 : Internet中唯一的地址;?


IP地址文本表現形式 : 有 IPv4 IPv6 兩種格式;


主機名解析 :?

-- 主機名到IP地址解析 : 使用 本地配置信息 和 網絡命名服務 實現, 特定命名服務默認情況下 是本地機器配置的;

-- 反向名稱解析 : 返回IP地址對應的主機名;


InetAddress 緩存 : 存儲 主機名解析, 不管成功還是失敗;

-- 默認緩存 : 正確解析的主機名 解析結果會永久保存, 如果解析失敗 該記錄只保存10秒;

-- 正主機名解析緩存 : 使用 networkaddress.cache.ttl 成功解析的緩存策略, 用于設置java安全屬性設置為另外的 TTL 值進行正緩存;

-- 負主機名解析緩存 : 使用 networkaddress.cache.negative.ttl 解析主機名失敗的緩存策略;



2. Inet4Address?


類的全名稱?:?

public final class Inet4Address extends InetAddress -- 作用 : 表示 IPv4 地址;


IP地址文本表示形式 :?

-- 指定4部分 : d.d.d.d , 每個部分都是一個字節數據, 從左到右 分配給 IPv4 四個字節;

-- 指定3部分 : d.d.d , 最后一部分是2個字節, 放在最右邊的網絡地址上;

-- 指定2部分 : d.d , 最后一部份是3個字節, 放在最右邊的三個字節上;

-- 指定1部分 : d , 直接存儲在網絡地址中, 字節不用重新排列;


多播地址范圍 : IPv4 生存時間 (Time-to-live) 作為多播范圍字段庫增加一倍;

-- TTL = 0 : 表示節點本地;

-- TTL = 1 : 表示鏈接本地;

-- TTL = 32 : 表示站點本地;

-- TTL = 64 : 表示地區本地;

-- TTL = 128 : 表示大陸本地;

-- TTL = 255 : 表示全球;


3. Inet6Address


類的全名稱 :?

public final class Inet6Address extends InetAddress -- 作用 : 代表 IPv6 地址;


(1) IPv6地址表示形式


1> 首選形式

x:x:x:x:x:x:x:x , 每個 x 都占 16 位地址段, x 是一個 16 進制的值, 如 8080:0:9:0:200:A12:100C:12 ;


2> 包含0位

零位產生 : 自動生成的 IPv6 地址, 經常包含 0 位的字符串;

0位壓縮 : 使用 "::" 壓縮 0 位, 如果連續出現多個 0 位, 可以使用 "::" 代替 8個字段中的 一個或者 多個 字段;

示例 :?8080:0:0:0:0:0:100C:12 , 可以壓縮為 8080:100C:12 , 中間的 5 位被壓縮了;


3> IPv4 和 IPv6 混合環境

混合環境替換形式 : x:x:x:x:x:x:d.d.d.d , 6 個 x 和 4 個 d, 一個 x 占 16位, 一個 d 占 8位;

映射 IPv4 的 IPv6 地址 : "::FFFF:192.168.1.1" 形式;

IPv4 兼容 IPv6 的地址 : "::192.168.1.1" 形式;

無效情況 : IPv4 必須是 d.d.d.d 格式的, 三位 或者 兩位 d 的格式無效;?

有效情況 : 一位 d 格式 ?"::FFFF:d" 有效;


4> 特殊 IPv6 地址

映射IPv4地址 : 格式 "::FFFF:d.d.d.d" , 這種類型的 IPv6 地址用于表示 IPv4 地址;?

IPv4 與 IPv6 節點通信 : 本機需要 使用 相同地址數據結構, 和 相同套接字;?

地址內部機制 : Java 中只有一種 IPv4 地址, 任何輸入的 IPv6 形式 或者 IPv4 地址映射的地址 都會被轉為 IPv4 地址形式;?


5> IPv6 范圍地址的文本表示形式

問題出現 : 鏈接本地 和 站點本地地址都是非全球的, 不同的主機 可能具有 相同的目標地址, 可能通過相同的始發系統上的不同接口到達;

解決方案 : 將始發系統連接到同一范圍的多個時區, 將 時區標識符(scope_id) ?添加到 IPv6 地址上;

指定scope_id格式 : IPv6-address%scope_id , IPv6 地址就是 x:x:x:x:x:x:x:x , scope_id 指的是本地接口, 如 eth0等;


scope_id 指定方式 :?

-- 數字標識符 : 必須是系統可以識別的特定接口 和 范圍的整數, 這些整數通過系統上的管理工具確定這些數字值;

-- 字符串標識 : 必須是 NetworkInterface.getName() 返回的確切字符串;



4. InetSocketAddress


類的全名稱 :?

public class InetSocketAddress extends SocketAddress-- 作用 : IP套接字地址, 包括 IP地址 和 端口號, 用于讓套接字進行 綁定 連接 或者當作返回值;


用法二 : 主機名 + 端口號, 嘗試解析主機名, 如果解析失敗, 該地址被標記為 未解析地址;


5. InterfaceAddress


類的全名稱 :?

public class InterfaceAddress extends Object-- 作用 : 表示網絡接口地址;

-- 對于 IPv4 地址 : IP地址, 子網掩碼, 廣播地址;

-- 對于 IPv6 地址 : IP地址, 網絡前綴長度;


6. SocketAddress


類的全名稱 :?

public abstract class SocketAddress extends Object implements Serializable-- 作用 : 這是一個不帶任何協議附件的 SocketAddress, 注意這是一個抽象類, 其子類應該是協議相關的;


7. NetworkInterface


類的全名稱 :?

public final class NetworkInterface extends Object-- 作用 : 由名稱 和 分配給此接口的IP地址列表組成的網絡接口, 用于標識加入多播組的本地接口; 接口名稱 "eth0", "wlan0" 等;


可以進行的操作 : 根據 IP地址 名稱 硬件地址 獲取網絡接口, 判斷網絡接口類型, 判斷網絡接口狀態, 對網絡接口進行一系列的操作;




三. 套接字相關類



1. ?Socket


類的全名稱 :?

public class Socket extends Object-- 作用 : 客戶端的套接字;


套接字工作原理 : 套接字的實際工作由 SocketImpl 類實例執行, 可以更改 SocketImplFactory 進行配置, 創建適合本地防火墻的套接字;


可進行的操作 : 綁定本地地址, 鏈接服務器, 獲取輸入輸出流, 設置選項, 獲取套接字的狀態;


2. SocketImpl


類的全名稱 :?

public abstract class SocketImpl extends Object implements SocketOptions-- 作用 : 該抽象類是實現套接字的所有類的通用超類, 創建客戶端 和 服務器套接字都可以使用該超類;


3. ServerSocket


類的全名稱 :?

public class ServerSocket extends Object -- 作用 : 服務器套接字;


工作流程 : 該服務器套接字 等待 客戶端請求傳入, 根據客戶端的各種請求做某些操作;


原理 : 服務器套接字的實際操作由 SocketImpl 對象執行;


創建適合本地防火墻的套接字 : 在應用程序中, 更改 創建 SocketImpl 的 SocketImplFactory 來配置 套接字;


4. MulticastSocket


類的全名稱 :?

public class MulticastSocket extends DatagramSocket -- 作用 : 用于 發送 和 接收 IP 多播包;

特點 : MulticastSocket 是一種 DatagramSocket, 比一般的 DatagramSocket 多出一個功能, 具有加入Internet 上其它多播主機組的功能;

多播組指定 : 多播組通過 D 類 IP地址, 和 標準 UDP 端口號指定;?



,

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的【Android 应用开发】Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。