2012-09-05 38 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