java - 启动选项以强制 Java 套接字连接到本地主机?

标签 java proxy localhost

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

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

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

提前致谢。 - 肖恩。

最佳答案

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

你有两个选择:

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

其实你有三个

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

您将在命令行中使用:

 java -Dhttp.proxyHost=localhost -Dhttp.proxyPort=8080 -jar YourJar.jar

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

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

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

同样的。

最后从 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 ){}
    ....
}

你只需要确保 myapp.properties 在类路径中可用

有关此功能的更多信息 here

关于java - 启动选项以强制 Java 套接字连接到本地主机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1581288/

相关文章:

javascript - Opera 26 (chromium) 中的 getUserMedia 来自本地主机被阻止

java - 减少负分数

java - 如何从 webapp(某种程度上是 web 应用程序目录)访问静态文件?

黑莓模拟器无法连接到互联网

Java 动态代理 - 如何引用具体类

c# - 如何将服务堆栈 4 与 asp.net MVC 4 并行安装?

visual-studio-2010 - 允许 Android 设备在同一网络上访问 IIS Express

java - Android:资源不包含资源编号 0x 的包

java - 具有所有子对象的深度复制java对象

c# - 如何通过http-header区分http和https