Java小程序和代理

4
假设我使用以下代码连接到SOCKS5代理,那么我实例化的小程序发送的连接或数据包是否会通过同一个代理服务器呢?
System.getProperties().setProperty("socksProxySet", "true");
System.getProperties().setProperty("socksProxyHost", "*.*.*.*");
System.getProperties().setProperty("socksProxyPort", "*");

Applet使用类加载器对象启动,然后创建一个实例。

classLoader = new CustomClassLoader(/* Hashmap of byte arrays */); // Custom classloader that works using byte arrays
Applet applet = (Applet) classLoader.loadClass("class").newInstance();
applet.setStub(stub);
applet.init();
applet.start();
frame.add(applet);

你打算如何实例化Applet(你的类加载器hack是做什么的)?在Applet中,你在哪里设置上述'socksProxy'设置?最后,这些设置是否针对公共可路由IP地址? - Elliott Frisch
我在主类中设置了设置,然后加载小程序。这个黑客只是允许我使用字节数组而不是限制我。它正常加载类。 - Constant
重新开始;一个主类还是一个小程序?它们并不是同义词。 - Elliott Frisch
这就是我的整个问题。 - Constant
1
没有名为socskProxySet的属性。请参考Oracle官方文档 - user207421
显示剩余3条评论
2个回答

2

看起来这个问题的答案是

以下代码:

public class TestApplet extends Applet {

    private String ip;

    public void init() {
        try {
            URL ipCheck = new URL("http://checkip.amazonaws.com");
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(ipCheck.openStream()));
            ip = bufferedReader.readLine();
            bufferedReader.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void stop() {
    }

    public void paint(Graphics g) {
        g.setColor(Color.BLACK);
        g.fillRect(0, 0, getWidth(), getHeight());
        g.setColor(Color.CYAN);
        g.drawString("Current IP: " + ip, 10, 20);
    }

}

并且

public class Boot {

    public static void main(String[] args) {
        System.getProperties().setProperty("socksProxySet", "true");
        System.getProperties().setProperty("socksProxyHost", "71.9.127.141"); //Credits to HideMyAss.com
        System.getProperties().setProperty("socksProxyPort", "28045");//Credits to HideMyAss.com

        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(5000);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                TestApplet testApplet = new TestApplet();
                testApplet.init();
                JFrame jFrame = new JFrame();
                jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
                jFrame.setSize(500, 500);
                jFrame.setContentPane(testApplet);
                jFrame.setVisible(true);
            }
        }).start();
    }

}    

输出:

在此输入图片描述


1
Tyler,如果我理解你的问题正确-是的。但是这带有一个警告:您设置的系统属性仅在当前JVM实例中持久存在。
因此,如果像您的示例所示,在同一JVM上设置属性并执行Applet,则应该没问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接