1

netty プロキシ サーバーの例を読んでもらいました。ただし、クライアントを実装してプロキシと通信する方法を知りたいです。私が実装しているソリューションはサーバーであり、クライアントがサーバーに接続するたびにソケットサーバーに接続する必要があります。そのため、サーバーに接続されている各クライアントは、別のサーバーからデータを送受信できます。

サーバー側は netty 上に構築されているため、このようなアーキテクチャを netty で実装するには助けが必要です。

4

1 に答える 1

1

実装したいものは、Nettyプロキシの例でほぼ答えられるようです

以下のコードセグメントは、新しいクライアントチャネルが開かれたときにリモートサーバーに接続する方法を示しています。

@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();
            }
        }
    });
}

リモートサーバーに接続されると、クライアントが(インバウンドチャネルを介して)送信するものはすべて、リモートサーバー(アウトバウンドチャネル)に転送されます。

まだ行っていない場合は、プロキシの例に従って実装することをお勧めします。

于 2013-02-15T00:09:01.783 に答える