W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
java.lang.Object
|---java.security.Permission
|---|---java.net.SocketPermission
public final class SocketPermission
extends Permission
implements Serializable
此類表示通過套接字訪問網絡。一個 SocketPermission 由一個主機規(guī)范和一組指定連接到該主機的方式的“操作”組成。主機被指定為
host = (hostname | IPv4address | iPv6reference) [:portrange]
portrange = portnumber | -portnumber | portnumber-[portnumber]
主機表示為 DNS 名稱、數字 IP 地址或“l(fā)ocalhost”(對于本地計算機)。 通配符“”可以包含在 DNS 名稱主機規(guī)范中一次。 如果包含它,它必須在最左邊的位置,如“.sun.com”。
IPv6reference 的格式應遵循 RFC 2732 中指定的格式:URL 中的 Literal IPv6 Addresses 格式:
ipv6reference = "[" IPv6address "]"
例如,您可以構造一個 SocketPermission 實例,如下所示:
String hostAddress = inetaddress.getHostAddress();
if (inetaddress instanceof Inet6Address) {
sp = new SocketPermission("[" + hostAddress + "]:" + port, action);
} else {
sp = new SocketPermission(hostAddress + ":" + port, action);
}
或者
String host = url.getHost();
sp = new SocketPermission(host + ":" + port, action);
IPv6 文字地址的完整未壓縮形式也是有效的。
端口或端口范圍是可選的。 “N-”形式的端口規(guī)范,其中N是端口號,表示編號為N及以上的所有端口,而形式為“-N”的規(guī)范表示編號為N及以下的所有端口。特殊端口值 0 指的是整個臨時端口范圍。這是系統(tǒng)可以用來分配動態(tài)端口的固定端口范圍。實際范圍可能取決于系統(tǒng)。
連接到主機的可能方式是
accept
connect
listen
resolve
“l(fā)isten”操作僅在與“l(fā)ocalhost”一起使用時才有意義,并且意味著能夠綁定到指定端口。 當存在任何其他動作時,暗示“resolve”動作。 操作“resolve”是指主機/IP 名稱服務查找。
在處理之前將操作字符串轉換為小寫。
以SocketPermissions的創(chuàng)建和含義為例,注意如果有以下權限:
p1 = new SocketPermission("puffin.eng.sun.com:7777", "connect,accept");
授予某些代碼,它允許該代碼連接到 puffin.eng.sun.com 上的端口 7777,并接受該端口上的連接。
同樣,如果有以下權限:
p2 = new SocketPermission("localhost:1024-", "accept,connect,listen");
被授予某些代碼,它允許該代碼在本地主機上的 1024 和 65535 之間的任何端口上接受連接、連接或偵聽。
注意:授予代碼接受或連接到遠程主機的權限可能很危險,因為惡意代碼可以更容易地在可能無法訪問數據的各方之間傳輸和共享機密數據。
構造函數 | 描述 |
---|---|
SocketPermission(String host, String action) | 使用指定的操作創(chuàng)建一個新的 SocketPermission 對象。 |
修飾符和類型 | 方法 | 描述 |
---|---|---|
String | getActions() | 返回操作的規(guī)范字符串表示。 |
boolean | implies(Permission p) | 檢查此套接字權限對象是否“implies”指定的權限。 |
從類 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
從類 java.security.Permission 繼承的方法 |
---|
checkGuard, getName, newPermissionCollection |
public SocketPermission(String host, String action)
使用指定的操作創(chuàng)建一個新的 SocketPermission 對象。 主機表示為 DNS 名稱或數字 IP 地址。 可選地,可以提供端口或端口范圍(用冒號與 DNS 名稱或 IP 地址分隔)。
要指定本地機器,請使用“l(fā)ocalhost”作為主機。 另請注意:空主機字符串 ("") 等效于 "localhost"。
actions 參數包含為指定主機(和端口)授予的操作的逗號分隔列表。 可能的操作是“連接”、“收聽”、“接受”、“解決”或這些的任意組合。 當指定其他三個中的任何一個時,會自動添加“resolve”。
SocketPermission 實例化的示例如下:
nr = new SocketPermission("www.catalog.com", "connect");
nr = new SocketPermission("www.sun.com:80", "connect");
nr = new SocketPermission("*.sun.com", "connect");
nr = new SocketPermission("*.edu", "resolve");
nr = new SocketPermission("204.160.241.0", "connect");
nr = new SocketPermission("localhost:1024-65535", "listen");
nr = new SocketPermission("204.160.241.0:1024-65535", "connect");
參數:
參數名稱 | 參數描述 |
---|---|
host | 計算機的主機名或 IP 地址,可選地包括一個冒號,后跟一個端口或端口范圍。 |
action | action字符串 |
public boolean implies(Permission p)
檢查此套接字權限對象是否“implies”指定的權限。
更具體地說,此方法首先確保以下所有條件為真(如果其中任何一個不為真,則返回假):
然后蘊含按順序檢查以下每一項,如果所述條件為真,則對每一項都返回真:
如果以上都不為true,則implies返回false。
指定者:
implies在類 Permission
參數:
參數名稱 | 參數描述 |
---|---|
p | 檢查的權限。 |
返回:
如果此對象隱含指定的權限,則為 true,否則為 false。
public String getActions()
返回操作的規(guī)范字符串表示。 始終按以下順序返回當前操作:連接、偵聽、接受、解決。
指定者:
權限類中的 getActions
返回:
actions的規(guī)范字符串表示。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯系方式:
更多建議: