2012-09-05 33 views
6
permission java.net.SocketPermission "192.168.1.1:31337", "connect, accept, resolve"; 

以下权限允许使用什么?是否允许我的应用程序仅接受来自192.168.1.1:31337(可能是外部客户端)的连接,或者接受连接到192.168.1.1:31337(我的应用程序正在192.168.1.1:31337上运行,其中与'listen “?)。如何理解java套接字权限?

回答

3

如果你的代码是一个applet或者在一个java安全管理器下运行,你需要明确授予它执行任务的权限。

为了允许applet(或使用安全管理器运行的应用程序)访问资源,必须将相应权限明确授予试图访问的代码。

默认情况下,您的代码没有套接字权限。您的许可表示您的代码有权接受连接,连接并解决只有主机IP 192.168.1.1端口31337

“接受”和“连接”行为是显而易见的。

当存在任何其他动作时,隐含“解决”动作。 “解析”动作是指主机/ IP名称服务查找。

“listen”动作仅在与“localhost”一起使用时才有意义。

listen和accept之间的区别在于,listen的意思是“为连接做好准备,看看有没有连接等待”,接受方法是“好的,接受它”。

See the docs for permissions in java 7.java.net.SocketPermission java docs

+0

好,阳光的文件说: 同样,如果以下权限: P2 =新的SocketPermission( “本地主机:1024-”, “接受,连接,侦听”); 被授予某些代码,它允许代码接受本地主机上1024到65535之间的任何端口上的连接,连接到或侦听。所以“接受”允许连接到特定主机,而不是来自特定主机。 – lazydaemon

+0

当然是“开”,而不是“开”。剩下的答案表明了这一点。纠正。谢谢。 – dcernahoschi