Netty代理服务器

时间:2013-02-12 15:23:20

标签: java netty

我已经阅读了netty代理服务器示例。但是,我想知道如何实现客户端与代理进行通信。我实现的解决方案是服务器,只要客户端连接到服务器,它就需要连接到套接字服务器。因此,连接到服务器的每个客户端都能够从另一个服务器发送/接收数据。

我需要帮助用netty来补充这样的架构,因为服务器端是建立在netty上的。

1 个答案:

答案 0 :(得分:1)

Netty proxy example

似乎可以回答你想要实现的内容

下面的代码段显示了打开新客户端通道后如何连接到远程服务器。

@Override
public void channelOpen(ChannelHandlerContext ctx, ChannelStateEvent e)
        throws Exception {
    // Suspend incoming traffic until connected to the remote host.
    final Channel inboundChannel = e.getChannel();
    inboundChannel.setReadable(false);

    // Start the connection attempt.
    ClientBootstrap cb = new ClientBootstrap(cf);
    cb.getPipeline().addLast("handler", new OutboundHandler(e.getChannel()));
    ChannelFuture f = cb.connect(new InetSocketAddress(remoteHost, remotePort));

    outboundChannel = f.getChannel();
    f.addListener(new ChannelFutureListener() {
        public void operationComplete(ChannelFuture future) throws Exception {
            if (future.isSuccess()) {
                // Connection attempt succeeded:
                // Begin to accept incoming traffic.
                inboundChannel.setReadable(true);
            } else {
                // Close the connection if the connection attempt has failed.
                inboundChannel.close();
            }
        }
    });
}

连接到远程服务器后,无论客户端发送什么(通过入站信道)都会转发到远程服务器(出站信道)。

如果您还没有这样做,我建议您关注并实施代理示例。