通过代理与netty 3.4.2.Final一起工作

时间:2013-03-07 11:14:21

标签: java netty socks

是否有可能使用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。

谢谢!

2 个答案:

答案 0 :(得分:2)

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

类:

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

3.6.2.final中的Netty包含package * .socks: http://netty.io/4.0/api/io/netty/handler/codec/socks/package-summary.html
因此,此对象模型可用于对来自socks服务器的socks消息进行编码/解码。

答案 1 :(得分:-1)

由于您正在使用从客户端到服务器的WebSockets连接,并且Web套接字协议基于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的代理example