我试图找到一种方法来强制 Jar 通过我的代理服务器对外部 IP 进行的任何连接尝试,该代理服务器在本地主机(也是 Java 应用程序)上运行。 一旦代理服务器收到连接,它将打开与外部 IP 的连接,并开始将 IO 路由到客户端/服务器或从客户端/服务器路由。
我已经用谷歌搜索了 2 天,但我没有任何运气,我相信我在搜索尝试中使用了错误的术语。
如果你有任何想法,请告诉我,我会尝试任何事情。
提前致谢。 - 肖恩。
最佳答案
如果是“真正的”代理,您可以使用 java 系统属性指定要使用的代理。
你有两个选择:
- 在命令行中指定代理
- 将其硬编码到您的应用中
其实你有三个
- 指定一个 .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/