JavaTM 2 Platform
Standard Ed. 6

java.net
類別 SocketPermission

java.lang.Object
  繼承者 java.security.Permission
      繼承者 java.net.SocketPermission
所有已實作的介面:
Serializable, Guard

public final class SocketPermission
extends Permission
implements Serializable

此類別表示通過Socket對網路的存取。SocketPermission 由主機規範和一組指定到該主機的連接方式的“動作”組成。主機被指定為

    host = (hostname | IPv4address | iPv6reference) [:portrange]
    portrange = portnumber | -portnumber | portnumber-[portnumber]
 
主機被表達為 DNS 名稱、數字 IP 位址或“本地主機”(對於本地機器而言)。在 DNS 名稱主機規範中,可能包括通配符 "*"。如果包括,則其必須位於最左邊的位置,如 "*.sun.com"。

IPv6reference 的格式應該按照 RFC 2732:Format for Literal IPv6 Addresses in URLs 中指定的格式:

    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-" 形式的埠號規範(其中 N 為埠號號)表示埠號號為 N 及以上的所有埠號;而 "-N" 形式的埠號規範則指示埠號號為 N 及以下的所有埠號。

連接到主機的可能方式為

 accept
 connect
 listen
 resolve
 
“偵聽”動作僅在與“本地主機”一起使用時才有意義。任何其他動作出現時,都會暗含“解析”動作。“解析”動作指的是主機/ip 名稱服務尋找。

作為 SocketPermission 的創建和含義的範例,注意如果將以下權限:

   p1 = new SocketPermission("puffin.eng.sun.com:7777", "connect,accept");
 
授予某個程式碼,則其允許該程式碼連接到 puffin.eng.sun.com 上的 7777 埠號,並接受該埠號上的連接。

類似地,如果將以下權限:

   p1 = new SocketPermission("puffin.eng.sun.com:7777", "connect,accept");
   p2 = new SocketPermission("localhost:1024-", "accept,connect,listen");
 
授予某個程式碼,則其允許該程式碼接受本地機器上 1024 和 65535 之間任何埠號上的連接、連接到這些埠號或者在這些埠號上進行偵聽。

註:授予程式碼接受遠端主機上的連接或連接到遠端主機的權限可能是危險的,因為惡意程式碼可以更加容易地在對保密資料不具存取權限的各方中傳輸和共享保密資料。

另請參見:
Permissions, SocketPermission

建構子摘要
SocketPermission(String host, String action)
          創建帶指定動作的新 SocketPermission 物件。
 
方法摘要
 boolean equals(Object obj)
          檢查兩個 SocketPermission 物件的相等性。
 String getActions()
          返回動作的規範化字元串表示形式。
 int hashCode()
          返回此物件的雜湊碼值。
 boolean implies(Permission p)
          檢查此Socket權限物件是否“暗含”指定的權限。
 PermissionCollection newPermissionCollection()
          用於存儲 SocketPermission 物件的新 PermissionCollection 物件。
 
從類別 java.security.Permission 繼承的方法
checkGuard, getName, toString
 
從類別 java.lang.Object 繼承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

建構子詳細資訊

SocketPermission

public SocketPermission(String host,
                        String action)
創建帶指定動作的新 SocketPermission 物件。主機被表達為 DNS 名稱或數字 IP 位址。可以選擇支持埠號還是埠號範圍(用冒號分隔 DNS 名稱或 IP 位址)。

要支持本地機器,請使用“本地主機”作為 host。還要注意:空的 host String ("") 等效於“本地主機”。

action 參數包含指定主機(和埠號)獲准的以逗號分隔的動作列表。可能的動作為“連接”、“偵聽”、“接受”、“解析”或這些動作的任意組合。當指定了其他三個動作時,會自動添加“解析”。

以下是 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 位址,可以選擇是否包括後跟埠號或埠號範圍的冒號。
actions - 動作字元串。
方法詳細資訊

implies

public boolean implies(Permission p)
檢查此Socket權限物件是否“暗含”指定的權限。

更明確地說,此方法首先確保以下情況全部為 true(如果其中任意一項不為 true,則返回 false):

然後 implies 將按順序檢查以下每一項,如果所述條件為 true,則為每一項返回 true:

如果上述條件都不為 true,則 implies 返回 false。

指定者:
類別 Permission 中的 implies
參數:
p - 所要檢查的權限。
返回:
如果物件隱含指定的權限,則返回 true;否則返回 false。

equals

public boolean equals(Object obj)
檢查兩個 SocketPermission 物件的相等性。

指定者:
類別 Permission 中的 equals
參數:
obj - 要與此物件進行相等性測試的物件。
返回:
如果 obj 為 SocketPermission,並且此 SocketPermission 物件具有相同的主機名、埠號範圍和動作,則返回 true。但是,如果 obj 僅包含動作“解析”,則比較中將忽略埠號範圍。
另請參見:
Object.hashCode(), Hashtable

hashCode

public int hashCode()
返回此物件的雜湊碼值。

指定者:
類別 Permission 中的 hashCode
返回:
此物件的雜湊碼值。
另請參見:
Object.equals(java.lang.Object), Hashtable

getActions

public String getActions()
返回動作的規範化字元串表示形式。返回始終按以下順序顯示動作:連接、偵聽、接受、解析。

指定者:
類別 Permission 中的 getActions
返回:
動作的規範化字元串表示形式。

newPermissionCollection

public PermissionCollection newPermissionCollection()
用於存儲 SocketPermission 物件的新 PermissionCollection 物件。

SocketPermission 物件必須以允許將它們按任意順序插入集合的方式來存儲,但同時也允許以有效(並一致)的方式實作 PermissionCollection 的 implies 方法。

覆寫:
類別 Permission 中的 newPermissionCollection
返回:
適合存儲 PropertyPermissions 的新 SocketPermissions 物件。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only