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

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

/*** Netty 服务端代码* * @author lihzh* @alia OneCoder* @blog http://www.coderli.com*/
public class HelloServer {public static void main(String args[]) {// Server服务启动器ServerBootstrap bootstrap = new ServerBootstrap(new NioServerSocketChannelFactory(Executors.newCachedThreadPool(),Executors.newCachedThreadPool()));// 设置一个处理client消息和各种消息事件的类(Handler)bootstrap.setPipelineFactory(new ChannelPipelineFactory() {@Overridepublic ChannelPipeline getPipeline()throws Exception {return Channels.pipeline(new HelloServerHandler());}});// 开放8000port供client訪问。bootstrap.bind(new InetSocketAddress(8000));}private static class HelloServerHandler extendsSimpleChannelHandler {/*** 当有client绑定到服务端的时候触发,打印"Hello world, I'm server."* * @alia OneCoder* @author lihzh*/@Overridepublic void channelConnected(ChannelHandlerContext ctx,ChannelStateEvent e) {System.out.println("Hello world, I'm server.");}}
}

/*** Netty client代码* * @author lihzh* @alia OneCoder* @blog http://www.coderli.com*/
public class HelloClient {public static void main(String args[]) {// Client服务启动器ClientBootstrap bootstrap = new ClientBootstrap(new NioClientSocketChannelFactory(Executors.newCachedThreadPool(),Executors.newCachedThreadPool()));// 设置一个处理服务端消息和各种消息事件的类(Handler)bootstrap.setPipelineFactory(new ChannelPipelineFactory() {@Overridepublic ChannelPipeline getPipeline() throws Exception {return Channels.pipeline(new HelloClientHandler());}});// 连接到本地的8000port的服务端bootstrap.connect(new InetSocketAddress("127.0.0.1", 8000));}private static class HelloClientHandler extends SimpleChannelHandler {/*** 当绑定到服务端的时候触发,打印"Hello world, I'm client."* * @alia OneCoder* @author lihzh*/@Overridepublic void channelConnected(ChannelHandlerContext ctx,ChannelStateEvent e) {System.out.println("Hello world, I'm client.");}}
}

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

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

你应该已经能够上手了:)

Java NIO框架Netty教程(一) – Hello Netty相关推荐

  1. Java NIO框架Mina、Netty、Grizzly介绍与对比

    Java NIO框架Mina.Netty.Grizzly介绍与对比 原文地址:https://blog.csdn.net/e765741668/article/details/45234711 Min ...

  2. Java NIO框架(Java编程)

    Java NIO框架 MINA 用netty性能和链接数.并发等压力测试参数好于mina 1.NIO弥补了原来的I/O的不足,它再标准java代码中提供了高速和面向块的I/O 原力的I/O库与NIO最 ...

  3. java nio oio_Java NIO框架Netty教程(十四)-Netty中OIO模型(对比NIO)

    OneCoder这个周末搬家,并且新家目前还没有网络,本周的翻译的任务尚未完成,下周一起补上,先上一篇OIO和NIO对比的小研究. Netty中不光支持了Java中NIO模型,同时也提供了对OIO模型 ...

  4. Java NIO框架Mina、Netty、Grizzly介绍与对比(zz)

    Mina: Mina(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应 ...

  5. Java NIO 框架 Netty 之美:粘包与半包问题

    Netty 是一个可以快速开发网络应用程序的 NIO 框架,它大大简化了 TCP 或者 UDP 服务器的网络编程.Netty 的简易和快速开发并不意味着由它开发的程序将失去可维护性或者存在性能问题,它 ...

  6. Java NIO框架Mina

    2019独角兽企业重金招聘Python工程师标准>>> 真羡慕java有系列的懒人框架,虽然c也有Netty, ACE等高速网络框架,但是语言的特性,决定了java框架之间更好集成, ...

  7. java nio 框架_几种Java NIO框架的比较(zz)

    问题:生活中工作中,会有人问我javaNIO框架里面 Netty Mina  xSocket Grizzly 等等哪个比较好? 在这里写一下自己的感受,也算是总结一下吧 在我的印象中.不管是什么NIO ...

  8. Java NIO框架

    NIO 全称是Non-Blocking IO或New IO,也就是非阻塞IO或新版IO. NIO的特性如下: 1.面向缓冲区(Buffer):每个Buffer 实质上是一个容器对象 每一种基本 Jav ...

  9. Netty教程02:Netty实战之TCP服务

    源码地址:https://gitee.com/pidaner/netty-class 官网:https://netty.io/ Netty is an asynchronous event-drive ...

  10. [转]Java NIO通俗易懂简明教程

    Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API.本系列教程将有助于你学习和理解Java NIO. Java NIO提供了与 ...

最新文章

  1. bzoj3714:[PA2014]Kuglarz
  2. 排序算法——归并排序
  3. 创建Servlet项目(IDEA版)
  4. 六、MySQL DML数据操纵语言学习笔记(插入、修改、删除详解 + 强化复习)
  5. 【华为云实战开发】1.传统Java项目怎么能变得高大上?
  6. 小学计算机打字比赛教案,小学信息技术二年级教案
  7. ubuntu18.04安装mysql8.0
  8. arduino 智能车组装步骤_Arduino 智能避障智能小车制作图文教程
  9. 大数据开发基础入门与项目实战(三)Hadoop核心及生态圈技术栈之1.Hadoop简介及Apache Hadoop完全分布式集群搭建
  10. 如何使用电脑将拍摄的照片做成gif格式动图?
  11. Logistic回归模型C统计量及95%可信区间计算
  12. 【转】蔡康永的说话之道
  13. 如何把两个视频拼在一个画面上?这样制作“画中画”
  14. B细胞介导的体液免疫
  15. 【华人学者风采】刘小平 中山大学
  16. 目标检测~FastPillars实时3D
  17. 什么是GO+和GO哪里不一样
  18. 【效率翻倍】vscode使用指南
  19. Linux下重启磁盘盘符会变,linux系统 重启盘符错乱问题
  20. 怎么写安卓手机脚本_拉结尔手游攻略,云手机全自动挂机刷副本及装备

热门文章

  1. 拥抱敏捷的用例分析方法
  2. flutter实现底部弹出框以及特色功能
  3. 开发办公APP时间估算
  4. 求正多边形的面积JAVA_第六章第三十六题(几何:正多边形的面积)(Geometry: area of a regular polygon)...
  5. java二进制转十进制代码_二进制转十进制java代码
  6. 重磅!神策智能推荐获 2019 大数据“星河奖”
  7. Fast Stone超好用的截图工具,可截取长图,带滚动条的页面
  8. react-template 包含客户端,服务端渲染完整示例
  9. 关于枚举,enum、Enum、EnumSet、RegularEnumSet、JumboEnumSet
  10. [原]SDL开发教程