当前位置 博文首页 > lenkee的博客:netty客户端服务端

    lenkee的博客:netty客户端服务端

    作者:[db:作者] 时间:2021-08-31 19:20

    ?Netty 是一个基于 JAVA NIO 类库的异步通信框架,它的架构特点是:异步非阻塞、基于事件驱动、高性能、高可靠性和高可定制性。

    netty服务端

    
    public class NettyServer {
    
    	public static void main(String[] args) {
    		// 1.创建服务对象
    		ServerBootstrap serverBootstrap = new ServerBootstrap();
    		// 2.创建两个线程池 第一个 监听端口号 nio监听
    		ExecutorService boos = Executors.newCachedThreadPool();
    		ExecutorService wook = Executors.newCachedThreadPool();
    		// 3.将线程池放入工厂
    		serverBootstrap.setFactory(new NioServerSocketChannelFactory(boos, wook));
    		// 4.设置管道工厂
    		serverBootstrap.setPipelineFactory(new ChannelPipelineFactory() {
    			// 设置管道
    			public ChannelPipeline getPipeline() throws Exception {
    				ChannelPipeline pipeline = org.jboss.netty.channel.Channels.pipeline();
    				// 传输数据的时候直接为string类型
    				pipeline.addLast("decoder", new StringDecoder());
    				pipeline.addLast("encoder", new StringEncoder());
    				// 设置事件监听类
    				pipeline.addLast("serverHanlder", new ServerHanlder());
    				return pipeline;
    
    			}
    		});
    		// 绑定端口号
    		serverBootstrap.bind(new InetSocketAddress(8080));
    		System.out.println("服务器端已经被启动.....");
    	}
    
    }
    

    netty客户端

    public class NettyClinent {
    	public static void main(String[] args) {
    		// 1.创建服务对象
    		ClientBootstrap clientBootstrap = new ClientBootstrap();
    		// 2.创建两个线程池 第一个 监听端口号 nio监听
    		ExecutorService boos = Executors.newCachedThreadPool();
    		ExecutorService wook = Executors.newCachedThreadPool();
    		// 3.将线程池放入工厂
    		clientBootstrap.setFactory(new NioClientSocketChannelFactory(boos, wook));
    		// 4.设置管道工厂
    		clientBootstrap.setPipelineFactory(new ChannelPipelineFactory() {
    			// 设置管道
    			public ChannelPipeline getPipeline() throws Exception {
    				ChannelPipeline pipeline = org.jboss.netty.channel.Channels.pipeline();
    				// 传输数据的时候直接为string类型
    				pipeline.addLast("decoder", new StringDecoder());
    				pipeline.addLast("encoder", new StringEncoder());
    				// 设置事件监听类
    				pipeline.addLast("clientHanlder", new ClientHanlder());
    				return pipeline;
    
    			}
    		});
    		// 绑定端口号
    		ChannelFuture connect = clientBootstrap.connect(new InetSocketAddress("127.0.0.1", 8080));
    		Channel channel = connect.getChannel();
    		System.out.println("client start");
    		Scanner scanner = new Scanner(System.in);
            while (true) {
            	System.out.println("请输入内容:");
            	channel.write(scanner.next());
    			
    		}
    	}
    }
    

    ?

    cs
    下一篇:没有了