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();
}
完成