java.lang.Object
java.security.Permission
java.net.SocketPermission
- 所有实现的接口:
-
Serializable
,Guard
这个类代表通过套接字访问网络。SocketPermission由主机规范和一组“操作”组成,指定连接到该主机的方式。主机被指定为
host = (hostname | IPv4address | iPv6reference) [:portrange] portrange = portnumber | -portnumber | portnumber-[portnumber]主机可以表示为DNS名称,数字IP地址,或者“localhost”(本地机器)。在DNS名称主机规范中可以包含通配符“*”。如果包含通配符“*”,它必须位于最左边的位置,如“*.example.com”。
IPv6引用的格式应遵循RFC 2732: URL中文字面IPv6地址的格式中指定的格式:
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("foo.example.com:7777", "connect,accept");给某些代码,它允许该代码连接到
foo.example.com
的端口7777,并在该端口上接受连接。
类似地,如果授予以下权限:
p2 = new SocketPermission("localhost:1024-", "accept,connect,listen");给某些代码,它允许该代码在本地主机上接受连接,连接到,或监听1024到65535之间的任何端口。
注意:授予代码对远程主机接受或建立连接的权限可能是危险的,因为恶意代码可以更轻松地在可能无法访问数据的各方之间传输和共享机密数据。
- 自版本:
- 1.2
- 外部规范
- 参见:
-
Constructor Summary
ConstructorDescriptionSocketPermission
(String host, String action) 使用指定的操作创建一个新的SocketPermission对象。 -
Method Summary
Modifier and TypeMethodDescriptionboolean
检查两个SocketPermission对象是否相等。返回操作的规范字符串表示形式。int
hashCode()
返回此对象的哈希码值。boolean
检查此套接字权限对象是否“暗示”指定的权限。返回一个新的PermissionCollection对象,用于存储SocketPermission对象。Methods declared in class java.security.Permission
checkGuard, getName, toString
-
Constructor Details
-
SocketPermission
使用指定的操作创建一个新的SocketPermission对象。主机表示为DNS名称或数字IP地址。可选地,可以提供端口或端口范围(与DNS名称或IP地址用冒号分隔)。要指定本地机器,请使用“localhost”作为host。还请注意:空的host字符串(“”)等同于“localhost”。
actions参数包含针对指定主机(和端口)授予的操作的逗号分隔列表。可能的操作有“connect”、“listen”、“accept”、“resolve”,或这些操作的任意组合。当指定其他三个操作中的任何一个时,“resolve”会自动添加。
SocketPermission实例化的示例如下:
nr = new SocketPermission("www.example.com", "connect"); nr = new SocketPermission("www.example.com:80", "connect"); nr = new SocketPermission("*.example.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
- 操作字符串。 - 抛出:
-
NullPointerException
- 如果任何参数为null -
IllegalArgumentException
- 如果host
的格式无效,或者action
字符串为空、格式不正确或包含除指定可能操作之外的操作
-
-
Method Details
-
implies
检查此套接字权限对象是否“暗示”指定的权限。更具体地说,此方法首先确保以下所有内容为真(如果其中任何一个不为真,则返回false):
- p是SocketPermission的一个实例,
- p的操作是此对象操作的适当子集,并且
- p的端口范围包含在此端口范围内。注意:当p仅包含操作“resolve”时,端口范围将被忽略。
implies
按照以下顺序检查每个,并对每个返回true,如果陈述条件为真:- 如果此对象使用单个IP地址初始化,并且p的IP地址之一等于此对象的IP地址。
- 如果此对象是通配符域(例如*.example.com),并且p的规范名称(不带任何前导*)以此对象的规范主机名结尾。例如,*.example.com暗示*.foo.example.com。
- 如果此对象未使用单个IP地址初始化,并且此对象的IP地址之一等于p的IP地址。
- 如果此规范名称等于p的规范名称。
implies
返回false。- 指定者:
-
implies
在类Permission
- 参数:
-
p
- 要检查的权限。 - 返回:
- 如果指定的权限被此对象暗示,则为true,否则为false。
-
equals
检查两个SocketPermission对象是否相等。- 指定者:
-
equals
在类Permission
- 参数:
-
obj
- 要与此对象进行相等性测试的对象。 - 返回:
- 如果obj是一个SocketPermission,并且具有与此SocketPermission对象相同的主机名、端口范围和操作。但是,如果obj仅包含操作“resolve”,则在比较中将忽略端口范围。
- 参见:
-
hashCode
public int hashCode()返回此对象的哈希码值。- 指定者:
-
hashCode
在类Permission
- 返回:
- 此对象的哈希码值。
- 参见:
-
getActions
返回操作的规范字符串表示形式。始终以以下顺序返回存在的操作: connect, listen, accept, resolve.- 指定者:
-
getActions
在类Permission
- 返回:
- 操作的规范字符串表示形式。
-
newPermissionCollection
返回一个新的PermissionCollection对象,用于存储SocketPermission对象。SocketPermission对象必须以一种允许它们以任何顺序插入到集合中的方式存储,但也必须使PermissionCollection的
implies
方法能够以高效(和一致)的方式实现。- 覆盖:
-
newPermissionCollection
在类Permission
- 返回:
- 适用于存储SocketPermissions的新PermissionCollection对象。
-