Netty初级例子-Hello World

1、导入的Jar,这里用netty-3.5.1.Final.jar

Netty的下载地址:http://netty.io/

2、编写服务端代码

public class HelloWorldHandler extends SimpleChannelHandler {
     @Override
     public void channelConnected(ChannelHandlerContext ctx,ChannelStateEvent event){
          event.getChannel().write("Hello World");
     }
     @Override
     public void exceptionCaught(ChannelHandlerContext ctx,ExceptionEvent event){
          event.getChannel().close();
     }

}

3、编写服务器测试类

public static void main(String[] args) {
      ServerBootstrap bootstrap = new ServerBootstrap(new NioServerSocketChannelFactory (Executors.newCachedThreadPool(), Executors.newCachedThreadPool()));
      bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
      @Override
      public ChannelPipeline getPipeline() throws Exception {
          // TODO Auto-generated method stub
          ChannelPipeline pipeline = Channels.pipeline();
          pipeline.addLast("decoder", new StringDecoder());   
          pipeline.addLast("encoder", new StringEncoder());  
          pipeline.addLast("handler", new HelloWorldHandler());//这里加入上面步骤2定义的HelloWorldHandler 
          return pipeline;
   }
  });
  bootstrap.bind(new InetSocketAddress(8080));
 }

4、编写客户端代码

public class HelloWorldClientHandler extends SimpleChannelHandler {
     @Override
     public void messageReceived(ChannelHandlerContext ctx, MessageEvent e){
          String message = (String)e.getMessage();
          System.out.println(message);
          e.getChannel().close();
     }
     public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception{
          e.getChannel().close();
     }

}

5、编写客户端测试类

public static void main(String[] args) {
      ClientBootstrap bootStrap = new ClientBootstrap(new NioClientSocketChannelFactory(Executors.newCachedThreadPool(), Executors.newCachedThreadPool()));
      bootStrap.setPipelineFactory(new ChannelPipelineFactory() {
          @Override public ChannelPipeline getPipeline() throws Exception {
                 // TODO Auto-generated method stub
                 ChannelPipeline channelPipeline = Channels.pipeline();
                 channelPipeline.addLast("decoder", new StringDecoder());  
                 channelPipeline.addLast("encoder", new StringEncoder());
                 channelPipeline.addLast("handler", new HelloWorldClientHandler());//这里加入4中定义的处理类
                return channelPipeline;
          }
  });
  
  ChannelFuture channelFuture = bootStrap.connect(new InetSocketAddress("127.0.0.1",8080));
  channelFuture.getChannel().getCloseFuture().awaitUninterruptibly();
  bootStrap.releaseExternalResources();
 }

完成

猜你喜欢

转载自zhangw2004.iteye.com/blog/2109638