0

クライアントが接続するたびに同期TCPサーバーの場合、クライアントの例の参照を取得します:

 int serverPortNum = 9000;
socket while(true) {
     ServerSocket connectionSocket = new ServerSocket(serverPortNum);
     Socket dataSocket = connectionSocket.accept( );
     // pass this reference(dataSocket ) to other part of program to read or write depending on app logic
}

Netty を使用して非同期 TCP サーバーを使用したいので、新しいクライアントが接続されたときに作成された ChannelPipeline または ChannelHandler の参照を取得する方法はありますか。

クライアント側では簡単にできます: サンプルコード: NioClientSocketChannelFactory ncscf = new NioClientSocketChannelFactory( Executors.newCachedThreadPool(), Executors.newCachedThreadPool()); ClientBootstrap clientBootstrap = new ClientBootstrap(ncscf);

    final DummyHandler  dummy = new DummyHandler();
    clientBootstrap.setPipelineFactory(new ChannelPipelineFactory() { 
        @Override
        public ChannelPipeline getPipeline() throws Exception { 
            return Channels.pipeline(dummy); 
        } 
    }); 

    InetAddress inetaddress = InetAddress.getByName(host);
    ChannelFuturecf=clientBootstrap.connect(newInetSocketAddress(inetaddress,port));                                                             

したがって、新しいクライアントを作成するたびに、新しい DummyHandler 参照があります

サーバー側: サンプルコード: ServerBootstrap bootstrap = new ServerBootstrap( new NioServerSocketChannelFactory( Executors.newCachedThreadPool(), Executors.newCachedThreadPool()));

    bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
        public ChannelPipeline getPipeline() throws Exception {
            return Channels.pipeline(new DummyServerHandler());
        }
    });


    bootstrap.bind(new InetSocketAddress(port));
   So when client request connection new DummyServerHandler object is created but i cannot get reference of this.  
4

1 に答える 1

0

私は質問を誤解しているかもしれませんが、これはうまくいきません。

Channel.getpipeline()
于 2013-03-23T15:40:21.373 に答える