2

有没有可能使用这里描述的 Netty:http: //docs.oracle.com/javase/6/docs/technotes/guides/net/proxies.html

也许有一些选择,例如:

System.getProperties().put("socksProxySet","true");
System.getProperties().put("socksProxyHost","127.0.0.1");
System.getProperties().put("socksProxyPort","1080");

我试过了,但 netty 不接受属性,也不通过 socks 代理代理请求。

ChannelFuture future =
                    bootstrap.connect(
                            new InetSocketAddress(uri.getHost(), uri.getPort()));

我的 netty 客户端通过 websockets 连接到 netty 服务器。

Java NIO 不支持代理。Netty 基于 Java NIO。我只是希望这种可能性存在/可以添加到netty。

谢谢!

4

2 回答 2

2

这很简单。您必须使用自己的处理程序创建您的侦听器。示例可以在这里找到: https ://github.com/shenfeng/async-http-client

类:

me.shenfeng.http.ConnectionListener
me.shenfeng.http.SocksHandler

来自 3.6.2.final 的 Netty 包含包 *.socks: http ://netty.io/4.0/api/io/netty/handler/codec/socks/package-summary.html 。
所以这个对象模型可以用来编码/解码 socks 消息到/来自 socks 服务器。

于 2013-03-11T12:19:04.093 回答
-1

由于您使用从客户端到服务器的 WebSockets 连接,并且 web-sockets 协议基于 HTTP,因此这种结构应该可以工作(它与您编写的略有不同):

//System.setProperty("socksProxySet","true"); //it's commented, because it seems to be not necessary
System.setProperty("socksProxyHost","127.0.0.1");
System.setProperty("socksProxyPort","1080");

但是正如您所说,它不适合您,那么我建议您查看官方 netty 的代理示例

于 2013-03-07T14:40:31.473 回答