zoukankan      html  css  js  c++  java
  • netty11---管道

    客户端:

    package com.server;
    import java.net.Socket;
    public class Client {
        public static void main(String[] args) throws Exception {
            Socket socket = new Socket("127.0.0.1", 10101);     
            socket.getOutputStream().write("hello".getBytes());     
            socket.close();
        }
    }

    服务端:

    package com.server;
    
    import java.net.InetSocketAddress;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    import org.jboss.netty.bootstrap.ServerBootstrap;
    import org.jboss.netty.channel.ChannelPipeline;
    import org.jboss.netty.channel.ChannelPipelineFactory;
    import org.jboss.netty.channel.Channels;
    import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;
    import org.jboss.netty.handler.codec.string.StringDecoder;
    import org.jboss.netty.handler.codec.string.StringEncoder;
    
    public class Server {
        public static void main(String[] args) {
            //服务类
            ServerBootstrap bootstrap = new ServerBootstrap();
            //boss线程监听端口,worker线程负责数据读写
            ExecutorService boss = Executors.newCachedThreadPool();
            ExecutorService worker = Executors.newCachedThreadPool();
            //设置niosocket工厂
            bootstrap.setFactory(new NioServerSocketChannelFactory(boss, worker));
            //设置管道的工厂
            bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
                @Override
                public ChannelPipeline getPipeline() throws Exception {
    
                    ChannelPipeline pipeline = Channels.pipeline();
                    pipeline.addLast("handler1", new MyHandler1());
                    pipeline.addLast("handler2", new MyHandler2());
                    return pipeline;
                }
            });
            bootstrap.bind(new InetSocketAddress(10101));
            System.out.println("start!!!");
        }
    }
    package com.server;
    
    import org.jboss.netty.buffer.ChannelBuffer;
    import org.jboss.netty.channel.ChannelHandlerContext;
    import org.jboss.netty.channel.MessageEvent;
    import org.jboss.netty.channel.SimpleChannelHandler;
    import org.jboss.netty.channel.UpstreamMessageEvent;
    
    public class MyHandler1 extends SimpleChannelHandler {
        @Override
        public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
            ChannelBuffer buffer = (ChannelBuffer)e.getMessage();
            byte[] array = buffer.array();
            String message = new String(array);
            System.out.println("handler1:" + message);
            //传递
            ctx.sendUpstream(new UpstreamMessageEvent(ctx.getChannel(), "abc", e.getRemoteAddress()));
            ctx.sendUpstream(new UpstreamMessageEvent(ctx.getChannel(), "efg", e.getRemoteAddress()));
        }
    }
    package com.server;
    
    import org.jboss.netty.channel.ChannelHandlerContext;
    import org.jboss.netty.channel.MessageEvent;
    import org.jboss.netty.channel.SimpleChannelHandler;
    
    public class MyHandler2 extends SimpleChannelHandler {
        @Override
        public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
            String message = (String)e.getMessage();
            System.out.println("handler2:" + message);
        }
    }
  • 相关阅读:
    [转]ASP.NET Core 中间件详解及项目实战
    [转]如何在ASP.NET Core中实现一个基础的身份认证
    [转]ASP.NET Core 之 Identity 入门(三)
    [转]ASP.NET Core 之 Identity 入门(二)
    [转]ASP.NET Core 之 Identity 入门(一)
    [转]用Middleware给ASP.NET Core Web API添加自己的授权验证
    [转]NET Core中实现一个Token base的身份认证
    [转]MVC过滤器
    [转]【无私分享:ASP.NET CORE 项目实战(第九章)】创建区域Areas,添加TagHelper
    [转]国家发展改革委关于印发促进中部地区崛起“十三五”规划的通知
  • 原文地址:https://www.cnblogs.com/yaowen/p/9063988.html
Copyright © 2011-2022 走看看