我已经阅读了 netty 代理服务器示例。但是我想知道如何实现客户端与代理交谈。我正在实施的解决方案是服务器,每当客户端连接到服务器时,它都需要连接到套接字服务器。因此,连接到服务器的每个客户端都将能够从另一台服务器发送/接收数据。
我需要帮助来用 netty 实现这样的架构,因为服务器端是建立在 netty 上的。
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();
}
}
});
}
一旦连接到远程服务器,客户端发送的任何内容(通过入站通道)都会转发到远程服务器(出站通道)。
如果您还没有这样做,我建议您遵循并实施代理示例。