public final class SocketPermission extends Permission implements Serializable
    host = (hostname | IPv4address | iPv6reference) [:portrange]
    portrange = portnumber | -portnumber | portnumber-[portnumber]
 
 ホストは、DNS名、数値によるIPアドレス、localhost (ローカル・マシンの場合)のどれかで表されます。 DNS名によるホストの指定では、ワイルドカード「*」を1つだけ使うことができます。 これを使う場合は、「*.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とそれより下のすべてのポート番号を表します。 特殊なポート値0は、一時的なポートの範囲全体を指します。 これは固定のポート範囲です。システムではこの範囲から動的ポートを割り当てることができます。 実際の範囲はシステムによって異なります。 
 
ホストへの接続方法としては、次のどれかを指定できます。
accept connect listen resolve「listen」アクションは、「localhost」とともに使用した場合だけ意味を持ち、特定のポートにバインドする機能を意味します。 「resolve」アクションは、ほかのアクションのいずれかが存在する場合には暗黙的に指定されます。 アクション「resolve」は、ホスト/IPのネーム・サービス検索を指します。
アクション文字列は、処理の前に小文字に変換されます。
SocketPermissionsの作成およびその意味を例に示します。
   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のポートに対して、接続の受け入れ、接続、待機を行うことを許可されます。
 ノート: リモート・ホストへの接続要求を受け付けるためのアクセス権やリモート・ホストへ接続するためのアクセス権をコードに与えると、悪意のあるコードが、そのようなアクセス権がなければそのデータにアクセスできないホスト間で、機密データをより簡単に転送および共有できるようになるため危険です。
Permissions, SocketPermission| コンストラクタ | 説明 | 
|---|---|
| SocketPermission(String host, String action) | 指定されたアクションを持つ新しいSocketPermissionオブジェクトを生成します。 | 
| 修飾子と型 | メソッド | 説明 | 
|---|---|---|
| boolean | equals(Object obj) | 2つのSocketPermissionオブジェクトが等しいかどうかを判定します。 | 
| String | getActions() | アクションの正規の文字列表現を返します。 | 
| int | hashCode() | このオブジェクトのハッシュ・コード値を返します。 | 
| boolean | implies(Permission p) | 指定されたアクセス権が、このソケット・アクセス権オブジェクトに含まれているかどうかを判定します。 | 
| PermissionCollection | newPermissionCollection() | SocketPermissionオブジェクトを格納するための、新しいPermissionCollectionオブジェクトを返します。 | 
checkGuard, getName, toStringpublic SocketPermission(String host, String action)
ローカル・マシンを指定するには、「localhost」をhostとして使用します。 ノート: 空のhost文字列(「」)は、「localhost」と等価です。
actionsパラメータには、指定されたホスト(および1つ以上のポート)に許可するアクションのカンマ区切りリストが含まれます。 指定可能なアクションは、「connect」、「listen」、「accept」、「resolve」、またはそれらの任意の組み合わせです。「resolve」は、ほかの3つのいずれかが指定された場合には自動的に追加されます。
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 - アクション文字列。public boolean implies(Permission p)
具体的には、このメソッドは最初に、次の条件がtrueであることを確認します。これらの条件が1つでもtrueでない場合、このメソッドはfalseを返します。
impliesは、次の条件を順番に確認し、条件に該当する場合は、それぞれについてtrueを返します。
 impliesはfalseを返します。implies、クラスPermissionp - チェック対象のアクセス権。public boolean equals(Object obj)
equals、クラスPermissionobj - このオブジェクトと等しいかどうかが判定されるオブジェクト。Object.hashCode(), HashMappublic int hashCode()
hashCode、クラスPermissionObject.equals(java.lang.Object), System.identityHashCode(java.lang.Object)public String getActions()
getActions、クラスPermissionpublic PermissionCollection newPermissionCollection()
 SocketPermissionオブジェクトの格納形式は、同オブジェクトを任意の順番でコレクションに挿入でき、さらに、PermissionCollectionのimpliesメソッドが効率的かつ矛盾のないように実装できる形式である必要があります。
newPermissionCollection、クラスPermission バグまたは機能を送信 
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。 
 Copyright © 1993, 2025, Oracle and/or its affiliates.  All rights reserved.  Use is subject to license terms.  Documentation Redistribution Policyも参照してください。