Возможно ли, что я мог бы динамически создавать клиентский клиент/сервер в обработчике канала клиента? Если это возможно, как вы могли бы достичь этого? (Я пробовал это, но не смог создать дочерний клиент при подключении с помощью bootstrap.connect, с другой стороны, я успешно создал дочерний сервер, который связывается с определенным портом, не знаю почему)netty - Можно ли загрузить новый клиент для подключения другого сервера в обработчике каналов?
Есть ли лучший способ достичь вышеуказанных функций, которые делают клиент динамическим, обмениваясь данными с другими серверами/клиентами, а не с сервером, с которым он сначала связан, но сохраняют соединение живым?
Дополнение Некоторые из кода, как это:.
public class FileClientHandler extends SimpleChannelUpstreamHandler {
.....
public void getFile(final String filename, final String md5){
// Configure the client.
ClientBootstrap bootstrap = new ClientBootstrap(
new NioClientSocketChannelFactory(
Executors.newCachedThreadPool(), Executors.newCachedThreadPool()));
// Configure the pipeline factory.
bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
public ChannelPipeline getPipeline() throws Exception {
return Channels.pipeline(new FileClientGetFileHandler(filename,md5));
}
});
// Start the connection attempt.
ChannelFuture future = bootstrap.connect(new InetSocketAddress(Ip, Port));
// Wait until the connection attempt succeeds or fails.
future.awaitUninterruptibly().getChannel();
if (!future.isSuccess()) {
System.out.print("Connect Failure!\n");
future.getCause().printStackTrace();
bootstrap.releaseExternalResources();
return;
}
// Wait until the connection is closed or the connection attempt fails.
future.getChannel().getCloseFuture().awaitUninterruptibly();
// Shut down thread pools to exit.
bootstrap.releaseExternalResources();
}
......
}
Это не удалось в future.awaitUninterruptibly() GetChannel();, если удалить его, все еще не в Соединим: future.isSuccess() == TRUE
Извините, что вы более конкретны. Я не понимаю ваш вопрос. –