启动选项以强制Java套接字连接到localhost?

Wha*_*non 3 java proxy localhost

我正试图找到一种方法来强制Jar通过我的代理服务器对外部IP进行任何连接尝试,该代理服务器在localhost(也是Java应用程序)上运行.一旦代理服务器收到连接,它将打开与外部IP的连接,并开始将IO路由到客户端/服务器或从客户端/服务器路由IO.

我已经谷歌搜索了2天,我没有运气,我相信我在搜索尝试中使用了错误的术语.

如果您有任何想法,请告诉我,我会尝试任何事情.

提前致谢. - 肖恩

Osc*_*Ryz 5

如果是"真正的"代理,您可以使用java系统属性指定要使用的代理.

你有两个选择:

  1. 在命令行中指定代理
  2. 将其硬编码到您的应用中

那么你实际上有三个

  1. 指定.properties文件,然后从那里读取,并将其设置为System属性(这几乎是选项2但更具动态性)

从命令行,您将使用:

 java -Dhttp.proxyHost=localhost -Dhttp.proxyPort=8080 -jar YourJar.jar
Run Code Online (Sandbox Code Playgroud)

这样您执行的所有http连接都将通过localhost端口进行8080

第二个是在程序的主要方法中添加:

public static void main( String [] args ) { 
    System.setProperty("http.proxyHost", "localhost");
    System.setProperty("http.proxyPort", "8080");
    .....
}
Run Code Online (Sandbox Code Playgroud)

哪个也一样.

最后加载 myapp.properties

public static void main( String [] args ) { 
    try { // there are cleaner ways of course 
        ResorceBundle bundle = ResourceBundle.getBundle("myapp");
        System.setProperty("http.proxyHost", bundle.getString("proxy.server"));
        System.setProperty("http.proxyPort", bundle.getString("proxy.port"));
    } catch( MissingResourceException missingResourceException ){}
    ....
}
Run Code Online (Sandbox Code Playgroud)

您只需确保myapp.properties从类路径中可用

有关此功能的更多信息,请访