netty学习(二)——Hello world!

来源:互联网 发布:投资 域名 编辑:程序博客网 时间:2024/06/06 00:06

在认识完基本概念后,我们开始进行我们自己的hello world 简单范例,以此来揭开netty的第一层面纱:

1,maven

        首先我们需要引入netty的jar包,依赖如下:

<dependency><groupId>io.netty</groupId><artifactId>netty</artifactId><version>3.10.5.Final</version></dependency>

2,服务端

        服务端的简单逻辑就是监听8000端口,注册消息处理方法,在获取到客户端链接的方法中打印 hello world


package com.xvshu.test.one;import org.jboss.netty.bootstrap.ServerBootstrap;import org.jboss.netty.channel.*;import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;import java.net.InetSocketAddress;import java.util.concurrent.Executors;/** * Netty 服务端 * Created by xvshu on 2016/7/13. */public class HelloServer {    public static void main(String args[]) {        // Server服务启动器        ServerBootstrap bootstrap = new ServerBootstrap(                new NioServerSocketChannelFactory(                        Executors.newCachedThreadPool(),                        Executors.newCachedThreadPool()));        // 设置一个处理客户端消息和各种消息事件的类(Handler)        bootstrap.setPipelineFactory(new ChannelPipelineFactory() {            @Override            public ChannelPipeline getPipeline() throws Exception {                return Channels.pipeline(new HelloServerHandler());            }        });        // 开放8000端口供客户端访问。        bootstrap.bind(new InetSocketAddress(8000));    }    private static class HelloServerHandler extends SimpleChannelHandler {        /**         * 当有客户端绑定到服务端的时候触发,打印"Hello world, I'm server."         *         * @alia OneCoder         * @author lihzh         */        @Override        public void channelConnected(ChannelHandlerContext ctx,                                     ChannelStateEvent e) {            System.out.println("Hello world, I'm server.");        }    }}



3,客户端

客户端比较简单,启动一个客户端,在获取到服务端链接的方法中打印 hello world


package com.xvshu.test.one;import org.jboss.netty.bootstrap.ClientBootstrap;import org.jboss.netty.channel.*;import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory;import java.net.InetSocketAddress;import java.util.concurrent.Executors;/** * Netty 客户端 * Created by xvshu on 2016/7/13. */public class HelloClient {    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."         *         * @alia OneCoder         * @author lihzh         */        @Override        public void channelConnected(ChannelHandlerContext ctx,                                     ChannelStateEvent e) {            System.out.println("Hello world, I'm client.");        }    }}

最后我们先运行服务端,然后运行客户端,发现都打印了hello world ,证明他们两个链接建立成功!


总结:

        网络是强大的,这些代码在网上就是最简单的示例,却为我们提供了非常好的学习入口,让人感觉简单,这样的感觉,是学习总比不可少的,起码是在初期比不可少的,信息+信心,我们将学习无所不易!

1 0
原创粉丝点击