365bet亚洲版登录-bet官网365入口

365bet亚洲版登录拥有超过百间客房,bet官网365入口的文化历经几十年的传承和积淀形成的核心内容获得业界广泛的认可,365bet亚洲版登录是目前信誉最高的娱乐场所,同国内外几百家网上内容供应商建立了合作关系。

1.Netty入门

Netty入门

1.Netty介绍

百度健全介绍:

Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的互联网应用程序框架和工具,用以飞快支付高品质、高可信赖性的互联网服务器和客户端程序。
也正是说,Netty 是贰个根据NIO的顾客、服务器端编制程序框架,使用Netty 能够保证您飞快和省略的开销出二个网络利用,譬喻落到实处了某种合同的顾客、服务端应用。Netty也正是简化和流线化了网络使用的编程开采进度,比方:基于TCP和UDP的socket服务付出。
“火速”和“简单”并不用发生维护性或品质上的主题材料。Netty 是二个收下了五种合同(包含FTP、SMTP、HTTP等各类二进制文本公约)的落到实处经验,并通过优异精心设计的连串。最终,Netty 成功的找到了一种艺术,在确定保障易于开采的还要还保险了其行使的习性,稳固性和伸缩性。

官方网址介绍:netty.io

Netty is an asynchronous event-driven network application framework
for rapid development of maintainable high performance protocol servers & clients.

图片 1

参考资料:

  1. 参谋书籍:Netty实战(诺玛n Maurer & Marvin 阿伦 Wolfthal)
  2. 参照官方文书档案:
  3. 参照网站:

2.顺序效能概述

图片 2

顾客端向服务器发送HelloNetty-Server!服务器向顾客端重返Hello Netty-Client!

3.程序实现

  1. 服务端ChannelHandler

    package com.xm.netty;import io.netty.buffer.ByteBuf;import io.netty.buffer.Unpooled;import io.netty.channel.ChannelFutureListener;import io.netty.channel.ChannelHandlerContext;import io.netty.channel.ChannelInboundHandlerAdapter;import io.netty.util.CharsetUtil;public class ServerHandler extends ChannelInboundHandlerAdapter { @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {     ByteBuf in =  msg;     System.out.println("服务器接收:"+in.toString(CharsetUtil.UTF_8));     in.clear();     String str = "Hello Netty-Client!";     in.writeBytes(str.getBytes;     ctx.write; } @Override public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {     ctx.writeAndFlush(Unpooled.EMPTY_BUFFER).addListener(ChannelFutureListener.CLOSE); }    @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {     cause.printStackTrace();     ctx.close(); }}
    
  2. 服务端Server

    package com.xm.netty;import java.net.InetSocketAddress;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.Channel;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.nio.NioServerSocketChannel;public class Server { private final int port; public Server {     this.port = port; } public static void main(String[] args) {     int port = 8989;     try {         new Server.start();     } catch (InterruptedException e) {         // TODO Auto-generated catch block         e.printStackTrace();     } } private void start() throws InterruptedException {      final ServerHandler serverHandler = new ServerHandler();      EventLoopGroup group = new NioEventLoopGroup();      try {         ServerBootstrap bootstrap = new ServerBootstrap();          bootstrap                 .group                 .channel(NioServerSocketChannel.class)                 .localAddress(new InetSocketAddress                 .childHandler(new ChannelInitializer() {                     @Override                     protected void initChannel(Channel ch) throws Exception {                         ch.pipeline().addLast(serverHandler);                     }                 });          ChannelFuture future = bootstrap.bind;          future.channel().closeFuture;     } finally {         group.shutdownGracefully;     } }}
    
  3. 客户端ChannelHandler

    package com.xm.netty;import io.netty.buffer.ByteBuf;import io.netty.buffer.Unpooled;import io.netty.channel.ChannelHandlerContext;import io.netty.channel.SimpleChannelInboundHandler;import io.netty.util.CharsetUtil;public class ClientHandler extends SimpleChannelInboundHandler<ByteBuf> { @Override public void channelActive(ChannelHandlerContext ctx) throws Exception {     ctx.writeAndFlush(Unpooled.copiedBuffer("Hello Netty-Server!",CharsetUtil.UTF_8)); } @Override protected void channelRead0(ChannelHandlerContext ctx, ByteBuf msg) throws Exception {     System.out.println("客户端接收到消息:"+msg.toString(CharsetUtil.UTF_8)); } @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {     cause.printStackTrace();     ctx.close(); }}
    
  4. 客户端Client

    package com.xm.netty;import io.netty.bootstrap.Bootstrap;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.NioSocketChannel;public class Client { private final int port; private final String host; public Client(int port, String host) {     this.port = port;     this.host = host; } public static void main(String[] args) {     String host = "127.0.0.1";     int port = 8989;     try {         new Client(port, host).start();     } catch (InterruptedException e) {         // TODO Auto-generated catch block         e.printStackTrace();     } } private void start() throws InterruptedException {     EventLoopGroup group = new NioEventLoopGroup();     try {         Bootstrap bootstrap = new Bootstrap();         bootstrap                 .group                 .channel(NioSocketChannel.class)                 .remoteAddress(host, port)                 .handler(new ChannelInitializer<SocketChannel>() {                     @Override                     protected void initChannel(SocketChannel ch) throws Exception {                         ch.pipeline().addLast(new ClientHandler;                     }                 });         ChannelFuture future = bootstrap.connect;         future.channel().closeFuture;     } finally {         group.shutdownGracefully;     } }}
    
  5. 导入正视

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>com.xm</groupId>  <artifactId>netty</artifactId>  <version>0.0.1-SNAPSHOT</version>  <dependencies><dependency>    <groupId>io.netty</groupId>    <artifactId>netty-all</artifactId>    <version>4.1.16.Final</version></dependency>  </dependencies></project>
    

4.运作结果:

  1. 服务端:

    服务器收到:Hello Netty-Server!

  2. 客户端:

    顾客端接收到音信:Hello Netty-Client!

本文由365bet亚洲版登录发布于计算机网络,转载请注明出处:1.Netty入门

您可能还会对下面的文章感兴趣: