2012-05-01 1 views
1

Возможно ли, что я мог бы динамически создавать клиентский клиент/сервер в обработчике канала клиента? Если это возможно, как вы могли бы достичь этого? (Я пробовал это, но не смог создать дочерний клиент при подключении с помощью 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

+0

Извините, что вы более конкретны. Я не понимаю ваш вопрос. –

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^