java - 获取 Java 套接字连接

标签 java security sockets applet accesscontrolexception

我在更新 Java 后开始出现问题(我认为)当我尝试连接到我的 Cpp 服务器(似乎工作正常)时,我收到一条错误消息,我找不到任何帮助。

以下是错误消息

java.security.AccessControlException: access denied
("java.net.SocketPermission" "127.0.0.1:4000" "connect,resolve")
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:366)
    at java.security.AccessController.checkPermission(AccessController.java:555)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
    at java.lang.SecurityManager.checkConnect(SecurityManager.java:1051)
    at java.net.Socket.connect(Socket.java:574)
    at java.net.Socket.connect(Socket.java:528)
    at java.net.Socket.<init>(Socket.java:425)
    at java.net.Socket.<init>(Socket.java:208)
    at jclientbare.init(jclientbare.java:27)
    at sun.applet.AppletPanel.run(AppletPanel.java:434)
    at java.lang.Thread.run(Thread.java:722)

Java源代码如下

import java.awt.*;
import java.applet.*;
import java.io.*;
import java.net.*;
import javax.swing.*;

public class jclientbare extends Applet {


    static BufferedReader in;
    static PrintStream out;

    public void init()  {

         try    {
                System.out.println("Test NN");
            Socket socket = new Socket( "localhost", 4000 );
        in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            out = new PrintStream( socket.getOutputStream(), true);
         }

         catch (UnknownHostException e) {

        JOptionPane.showMessageDialog(null, "Unknown Host..");
            System.out.println("Unknown host: kq6py");

           } catch  (IOException e) {

        JOptionPane.showMessageDialog(null, "NO IO.");
            System.out.println("No I/O");
         }
     }

}

Java 小程序不会注册连接,它只是用错误消息进行轰炸。任何帮助,将不胜感激!我认为这可能是 java.policy 的问题,但我不知道如何修复它。

呃,你如何进行堆栈跟踪?

最佳答案

尝试授予权限:

grant 
{
  permission java.net.SocketPermission 
  "127.0.0.1:4000", "connect,resolve";
};

有关授予权限的详细信息,您可以查看以下链接: http://java.sun.com/developer/onlineTraining/Programming/JDCBook/appA.html

本文很好地解释了策略文件的位置以及如何使用特定策略文件运行应用程序。

以下链接详细说明了在哪里可以找到策略文件以及策略文件的加载顺序: http://download.java.net/jdk8/docs/technotes/guides/security/PolicyFiles.html#DefaultLocs

据我了解,如果您在 Windows 中,则可以将文件“.java.policy”放在“我的文档”文件夹中。当您在浏览器中运行小程序时,它会找到此策略文件作为用户策略文件。

关于java - 获取 Java 套接字连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12345201/

相关文章:

从 GUI 但不是从控制台应用程序调用 JNI 时,Java 关闭(崩溃)

sql-server - 如何阻止陌生用户尝试连接到我的 SQL Server 数据库?

asp.net - 有没有办法在 AspNetUser 表中反序列化 ProtectedTicket ?

express - 当 OWASP 说你不应该 "send raw responses to clients"时是什么意思?

C使用sendto发送多种数据类型

sockets - sslscan.c :94:25: fatal error: openssl/err. h : No such file or directory compilation terminated. #163

java - 如何在 Java 中指定字节文字?

java - Android加载字节数组图像列表

没有 GUI 的 JavaFX

java - 在 C++ 和 Java 之间传输数据最快的方法是什么