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