• netty使用(2)创建一个EchoServer并且部署运行


    1.打开Eclipse,File->New->Java Project,在弹出的对话框中,project name填写XXX,然后点击“finish”

    2.右键该工程,new->Class,在弹出的对话框中,Package随便写一个club.test,Name写myhello

     3.下载netty,解压,选择all-in-one文件夹里面的final那个jar包。

    4.把jar包添加到工程中去,

    方法a:右键工程,new->Folder,命名为比如nettylib,复制netty的jar包,选中nettylib文件夹后,Ctrl+V粘帖。

    右键,这个.jar包,Build path,Add to build path

    方法b:右键工程,Build Path->Build Path Configurations,在弹出的对话框中,选中Libraries选项卡,点击Add External JAR

    5. myhello.java文件代码如下

    package club.test;
    
    
    import io.netty.bootstrap.ServerBootstrap;
    import io.netty.channel.ChannelFuture;
    import io.netty.channel.ChannelInitializer;
    import io.netty.channel.EventLoopGroup;
    import io.netty.channel.nio.NioEventLoopGroup;
    import io.netty.channel.socket.SocketChannel;
    import io.netty.channel.socket.nio.NioServerSocketChannel;
    
    import io.netty.buffer.ByteBuf;
    import io.netty.buffer.Unpooled;
    import io.netty.channel.ChannelFutureListener;
    import io.netty.channel.ChannelHandler.Sharable;
    import io.netty.channel.ChannelHandlerContext;
    import io.netty.channel.ChannelInboundHandlerAdapter;
    import io.netty.util.CharsetUtil;
    
    import java.net.InetSocketAddress;
    
    /**
     * Listing 2.2 EchoServer class
     *
     * @author <a href="mailto:norman.maurer@gmail.com">Norman Maurer</a>
     */
    public class myhello {
        private final int port;
    
        public myhello(int port) {
            this.port = port;
        }
    
        public static void main(String[] args)
            throws Exception {
            if (args.length != 0) {
                System.err.println("Usage: " + myhello.class.getSimpleName() +
                    " <port>"
                );
                return;
            }
            //int port = Integer.parseInt(args[0]);
            new myhello(8888).start();
        }
    
        /**
         * @throws Exception
         */
        public void start() throws Exception {
            final goodHandler serverHandler = new goodHandler();
            EventLoopGroup group = new NioEventLoopGroup();
            try {
                ServerBootstrap b = new ServerBootstrap();
                b.group(group)
                    .channel(NioServerSocketChannel.class)
                    .localAddress(new InetSocketAddress(port))
                    .childHandler(new ChannelInitializer<SocketChannel>() {
                        @Override
                        public void initChannel(SocketChannel ch) throws Exception {
                            ch.pipeline().addLast(serverHandler);
                        }
                    });
    
                ChannelFuture f = b.bind().sync();
                System.out.println(myhello.class.getName() +
                    " started and listening for connections on " + f.channel().localAddress());
                f.channel().closeFuture().sync();
            } finally {
                group.shutdownGracefully().sync();
            }
        }
    }
    @Sharable
    class goodHandler extends ChannelInboundHandlerAdapter {
        @Override
        public void channelRead(ChannelHandlerContext ctx, Object msg) {
            ByteBuf in = (ByteBuf) msg;
            System.out.println(
                    "Server received: " + in.toString(CharsetUtil.US_ASCII));
            ctx.write(in);
        }
    
        @Override
        public void channelReadComplete(ChannelHandlerContext ctx)
                throws Exception {
            ctx.writeAndFlush(Unpooled.EMPTY_BUFFER)
                    .addListener(ChannelFutureListener.CLOSE);
        }
    
        @Override
        public void exceptionCaught(ChannelHandlerContext ctx,
            Throwable cause) {
            cause.printStackTrace();
            ctx.close();
        }
    }

     如果需要参数,右键工程,run as ==》run configurations

    在arguments,program arguments中输入

     6.导出可运行jar包

    右键工程,export,在弹出对话框中选择java,ruannable JAR  file,

    launch configuration对应本工程,目标文件夹选择好,其他默认。

     控制台中,到当前路径

    java -jar XXX.jar

    如果程序需要参数,直接加在最后。

  • 相关阅读:
    9.12 其他样式;JS
    9.11 样式表
    9.9 样式表
    PHP延迟几秒后执行,PHP延迟执行,PHP停顿几毫秒后执行 usleep() 和 sleep()
    PHP 去除url参数中出现+、空格、=、%、&、#等字符的解决办法, PHP去除影响url路径的字符
    java第一堂课-常用的电脑快捷键操作和重要的dos命令
    常用第三方接口,支付宝支付,微信支付,软著,IOS开发者账号
    苹果开发者账号申请流程完整版 https://www.jianshu.com/p/655380201685
    thinkphp 去重查询
    将数据导【入】【excel表】格式 前端页面
  • 原文地址:https://www.cnblogs.com/legion/p/8257797.html
Copyright © 2020-2023  润新知