先啰嗦两句,如果你还不知道Netty是做什么的能做什么。那可以先简单的搜索了解一下。我只能说Netty是一个NIO的框架,可以用于开发分布式的Java程序。具体能做什么,各位可以尽量发挥想象。技术,是服务于人而不是局限住人的。

如果你已经万事具备,那么我们先从一段代码开始。程序员们习惯的上手第一步,自然是"Hello world",不过Netty官网的例子却偏偏抛弃了"Hello world"。那我们就自己写一个最简单的"Hello world"的例子,作为上手。

1 /**

2 * Netty 服务端代码3 *4 *@authorlihzh5 * @alia OneCoder6 * @bloghttp://www.coderli.com

7 */

8 public classHelloServer {9

10 public static voidmain(String args[]) {11 //Server服务启动器

12 ServerBootstrap bootstrap = newServerBootstrap(13 newNioServerSocketChannelFactory(14 Executors.newCachedThreadPool(),15 Executors.newCachedThreadPool()));16 //设置一个处理客户端消息和各种消息事件的类(Handler)

17 bootstrap18 .setPipelineFactory(newChannelPipelineFactory() {19 @Override20 publicChannelPipeline getPipeline()21 throwsException {22 returnChannels23 .pipeline(newHelloServerHandler());24 }25 });26 //开放8000端口供客户端访问。

27 bootstrap.bind(new InetSocketAddress(8000));28 }29

30 private static class HelloServerHandler extends

31 SimpleChannelHandler {32

33 /**

34 * 当有客户端绑定到服务端的时候触发,打印"Hello world, I'm server."35 *36 * @alia OneCoder37 *@authorlihzh38 */

39 @Override40 public voidchannelConnected(41 ChannelHandlerContext ctx,42 ChannelStateEvent e) {43 System.out.println("Hello world, I'm server.");44 }45 }46 }

/*** Netty 客户端代码

*

*@authorlihzh

* @alia OneCoder

* @bloghttp://www.coderli.com

*/

public classHelloClient {public static voidmain(String args[]) {//Client服务启动器

ClientBootstrap bootstrap = newClientBootstrap(newNioClientSocketChannelFactory(

Executors.newCachedThreadPool(),

Executors.newCachedThreadPool()));//设置一个处理服务端消息和各种消息事件的类(Handler)

bootstrap.setPipelineFactory(newChannelPipelineFactory() {

@Overridepublic ChannelPipeline getPipeline() throwsException {return Channels.pipeline(newHelloClientHandler());

}

});//连接到本地的8000端口的服务端

bootstrap.connect(newInetSocketAddress("127.0.0.1", 8000));

}private static class HelloClientHandler extendsSimpleChannelHandler {/*** 当绑定到服务端的时候触发,打印"Hello world, I'm client."

*

* @alia OneCoder

*@authorlihzh*/@Overridepublic voidchannelConnected(ChannelHandlerContext ctx,

ChannelStateEvent e) {

System.out.println("Hello world, I'm client.");

}

}

}

既然是分布式的,自然要分多个服务。Netty中,需要区分Server和Client服务。所有的Client都是绑定在Server上的,他们之间是不能通过Netty直接通信的。(自己采用的其他手段,不包括在内。)。白话一下这个通信过程,Server端开放端口,供Client连接,Client发起请求,连接到Server指定的端口,完成绑定。随后便可自由通信。其实就是普通Socket连接通信的过程。

Netty框架是基于事件机制的,简单说,就是发生什么事,就找相关处理方法。就跟着火了找119,抢劫了找110一个道理。所以,这里,我们处理的是当客户端和服务端完成连接以后的这个事件。什么时候完成的连接,Netty知道,他告诉我了,我就负责处理。这就是框架的作用。Netty,提供的事件还有很多,以后会慢慢的接触和介绍。

你应该已经可以上手了:)

java nio框架netty教程_Java NIO框架Netty教程(一) – Hello Netty相关推荐

  1. java netty教程_Java NIO框架Netty教程(一) – Hello Netty

    先啰嗦两句,如果你还不知道Netty是做什么的能做什么.那可以先简单的搜索了解一下.我只能说Netty是一个NIO的框架,可以用于开发分布式的Java程序.具体能做什么,各位可以尽量发挥想象.技术,是 ...

  2. java自定义封装一个方法_Java自定义套件封装教程

    Java自定义套件封装教程 时间:2017-07-28     来源:华清远见JAVA学院 各位亲爱的小伙伴们大家好,近很多伙伴都问我该怎么做Java自定义套件封装,今天华清Java学院小编在这里做了 ...

  3. java netty 教程_Java NIO框架Netty教程(十六)

    该图是OneCoder通过阅读Netty源码,逐渐记录下来的.基本可以说明Netty服务的启动流程.这里在具体讲解一下. 首先说明,我们这次顺利的流程是基于NioSocketServer的.也就是基于 ...

  4. java nio教程_Java NIO教程

    java nio教程 1.简介 Java NIO是Java 1.4引入的一个库. 自从Java NIO推出以来,它提供了另一种方法来处理I / O和网络事务. 它被认为是Java网络和Java IO库 ...

  5. java高级框架应用开发案例教程_Java高级框架应用开发案例教程:struts2+spring+hibernate PDF...

    资源名称:Java高级框架应用开发案例教程:struts2+spring+hibernate PDF 第1章 struts+spring+hibernate概述 1.1 框架概述 1.2 struts ...

  6. java.nio教程_Java NIO系列教程(三) Buffer

    原文链接     作者:Jakob Jenkov     译者:airu     校对:丁一 Java NIO中的Buffer用于和NIO通道进行交互.如你所知,数据是从通道读入缓冲区,从缓冲区写入到 ...

  7. c++框架有哪些_Java Mybatis框架入门教程_v20200726

    MyBatis 的前身是 Apache 的开源项目 iBatis.MyBatis 几乎可以代替 JDBC,是一个支持普通 SQL 查询,存储过程和高级映射的基于 Java 的优秀持久层框架.MyBat ...

  8. java文件正确编写格式_java Srpingboot框架书写mapper代码的正确格式

    java Srpingboot框架书写mapper代码的正确格式 发布时间:2019-07-16原创 阅读(326) 最近新项目使用的是springboot框架,很多地方比以往的spring框架做了简 ...

  9. java nio 追加写文件_Java NIO在文件末尾追加数据

    [java]代码库import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import ja ...

最新文章

  1. 腾讯云数据库副总监:图数据库好在哪?该用在哪?
  2. 图像放大算法一:最近邻法(Nearest Interpolation)
  3. 业界首个!华为联合中国信通院等发布《网络体系强基展望白皮书》
  4. FPGA在电平接口领域的应用
  5. 软件Trimmomatic
  6. 如何:在 Visual Studio 中添加或移除引用(转载)
  7. security NO.2
  8. vb.net中类型转换
  9. [转]tesseract OCR Engine overview字符识别学习
  10. dedecms /plus/feedback.php SQL Injection Vul
  11. 启动php出现的错误
  12. redis高级-------2
  13. AttributeError: ‘str‘ object has no attribute ‘copy
  14. 二、源代码=程序集及程序集概念介绍
  15. 7-16 求符合给定条件的整数集
  16. 云服务器工具大全,云服务器主要的登陆方法有哪些
  17. win10电脑突然黑屏 亮屏后出现d-sub是什么意思?
  18. Mac终端自动补全及常用命令
  19. 两台电脑大文件传输的详细教程
  20. elementui实现上传视频功能+预览

热门文章

  1. 【基于python实现UI自动化】3.4 JS 处理日历控件(删除 readonly 属性)
  2. 程序员什么时候该考虑辞职?
  3. 经理人必看:“中国式管理”经典语录
  4. 未能写入输出文件“c:\Windows\Microsoft.NET\Framework... AppCode.dll 拒绝访问
  5. 我从建筑工程施工员转行成了数据分析师| 求职分享
  6. 晚安,2010 - Steven的2010纪念册
  7. [C++] atoi()和stoi()函数
  8. 淘淘商城-商城后台商品列表之商品编辑(商品管理-查询商品-编辑商品)
  9. 小技巧---火狐浏览器显示书签栏
  10. Android Bluetooth 集成