netty入门学习(2)-一个简单的netty实例

来源:互联网 发布:小米视频电话软件 编辑:程序博客网 时间:2024/05/16 00:44

一:服务端

import java.net.InetSocketAddress;import java.util.concurrent.Executors;import org.jboss.netty.bootstrap.ServerBootstrap;import org.jboss.netty.channel.ChannelHandlerContext;import org.jboss.netty.channel.ChannelPipeline;import org.jboss.netty.channel.ChannelPipelineFactory;import org.jboss.netty.channel.ChannelStateEvent;import org.jboss.netty.channel.Channels;import org.jboss.netty.channel.SimpleChannelHandler;import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;public class NioServer {public static void main(String args[]){//Server服务启动器ServerBootstrap bootstrap = new ServerBootstrap(new NioServerSocketChannelFactory(Executors.newCachedThreadPool(),Executors.newCachedThreadPool()));//设置处理客户端消息和各种消息事件的类(Handler)bootstrap.setPipelineFactory(new ChannelPipelineFactory(){@Overridepublic ChannelPipeline getPipeline() throws Exception {return Channels.pipeline(new HelloServerHandler());}});//绑定8000端口供客户端访问bootstrap.bind(new InetSocketAddress(8000));}private static class HelloServerHandler extends SimpleChannelHandler{@Overridepublic void channelConnected(ChannelHandlerContext ctx,ChannelStateEvent e){System.out.println("Hello world,I'm server.");}}}

二:

客户端:

import java.net.InetSocketAddress;import java.util.concurrent.Executors;import org.jboss.netty.bootstrap.ClientBootstrap;import org.jboss.netty.channel.ChannelHandlerContext;import org.jboss.netty.channel.ChannelPipeline;import org.jboss.netty.channel.ChannelPipelineFactory;import org.jboss.netty.channel.ChannelStateEvent;import org.jboss.netty.channel.Channels;import org.jboss.netty.channel.SimpleChannelHandler;import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory;public class NioClient {public static void main(String args[]){   // Client服务启动器        ClientBootstrap bootstrap = new ClientBootstrap(                new NioClientSocketChannelFactory(                        Executors.newCachedThreadPool(),                        Executors.newCachedThreadPool()));        // 设置一个处理服务端消息和各种消息事件的类(Handler)        bootstrap.setPipelineFactory(new ChannelPipelineFactory() {            @Override            public ChannelPipeline getPipeline() throws Exception {                return Channels.pipeline(new HelloClientHandler());            }        });        // 连接到本地的8000端口的服务端        bootstrap.connect(new InetSocketAddress(                "127.0.0.1", 8000));}private static class HelloClientHandler extends SimpleChannelHandler {          /**         * 当绑定到服务端的时候触发,打印"Hello world, I'm client."         */        @Override        public void channelConnected(ChannelHandlerContext ctx,                ChannelStateEvent e) {            System.out.println("Hello world, I'm client.");        }    }}


原创粉丝点击