文档章节

netty5.0总结

 天下杰论
发布于 2014/11/13 12:02
字数 680
阅读 106
收藏 1
点赞 0
评论 0
5.0以后内容:
     netty初体验,netty是个高性能的java通信框架,至于oio还是nio,它都支持,核心概念:基于事件驱动的架构,很容易让人联想到观 察者模式。它提供的数据结构为ByteBuf,这个是个什么东西?可以理解为:一个数据的载体,比如我接收和发送的消息,得到的都是ByteBuf对象, 它是对字节流的一个高度抽象化,并提供比NIO的ByteBuffer更多的功能,不至于同一个buffer中经常操作,flip,compact等方 法,更为简洁实用,同时如果客户端和服务端都采用java,那么它也可以提供自定义的object类型的数据载体。netty官方提供的example很 多,客户端和服务端如何写,照猫画虎即可。
     把握住两个关键点即可:*handler和传递的内容(即发送和接收的消息),*handler里面包含具体事件的触发方法:比如 exceptionCaught方法(出现异常时)、messageReceived方法(接收消息时)、channelActive(连接刚建立时)等 方法,采用最新的SimpleChannelInboundHandler 这个handler,T可以为自定义的任何对象,如果不需要自定义对象,那么传递Object即可,如果是自定义对象或者java基本类型或String 类型,那么必须得有个大前提:客户端和服务端都必须得进行一定的转换,换句话说:我的客户端和服务端必须都得用netty的相关API封装一次(具体看 netty例子)。如果不是自定义对象,而传递的是Object,那么在收到消息时,必须进行强制转换为ByteBuf对象,通过 ChannelHandlerContext进行发送,这个时候发送的是ByteBuf对象,如果是自定义对象,那么 ChannelHandlerContext.write(自定义对象)即可,同时必须调用flush方法才能发送出去,也可调用 wirteAndFlush(自定义对象)方法。
      
     深究了两天netty,得出的结论是:如果客户端和服务端都基于netty,那么互发消息,各种类型协议消息,基本都不成问题。官方example很多,照猫画虎,自定义随便玩

     但是,如果我只用netty的服务端,而客户端是一个纯粹的socket,比如其它语言的客户端,比如纯粹只是一个硬件,进行socket连接等等,即不采用netty的API,而且不是java语言,那么就会有一些问题。 

ReferenceCountUtil.release(msg);这是netty提供的一个释放ByteBuf内存的方法,如果不采用这个,直接调用ByteBuf.release方法也可以,如果你调用了writeAndFlush方法。

© 著作权归作者所有

共有 人打赏支持
粉丝 53
博文 400
码字总数 23359
作品 0
沈阳
项目经理
Netty服务器在线上运行了几天,就会出现大量的TIME_WAIT,之后客户端就怎么都连接不上了,服务端的通道总是拒绝连接

netty5.0 服务端运行一段时间后,产生大量的timeout,客户端总是连接不上 客户端是gprs连接

landlore ⋅ 2016/09/21 ⋅ 7

Android 端用netty5.0要使用到哪些 jar包,求解,用all的话太大了

Android 端用netty5.0要使用到哪些 jar包,求解,用all的话太大了

有毛的汉子 ⋅ 2015/03/31 ⋅ 2

Netty5.0 用在android 上

12-14 17:28:38.906 23413-24753/com.dami.tkhxs I/NettyClient: connect failed Unable to create Channel from class class io.netty.channel.socket.nio.NioSocketChannel reconnect dela......

uglyApple ⋅ 2016/12/14 ⋅ 1

七 netty学习之 boss线程池,worker线程的生命周期

netty的线程模型 1. bossGroup线程组 如果绑定了一个端口的话,那么只有一条线程来处理所有到来的请求.即使这个线程组里可能不止一条线程如果绑定了两个端口的话,那就有两条线程new EventLoop...

plugin ⋅ 2015/11/08 ⋅ 0

netty5.0 在android上 出错 不知道哪里

最近在做一个项目用到netty, java做服务器, android做客户端连接上,数据都能互通, 但是我把服务器关闭后, android客户端并没有报错之类的提示,在文档里说的是channelInactive()这里方法里能响...

hdog ⋅ 2015/09/29 ⋅ 2

Netty那点事(四)Netty与Reactor模式

![Reactors][1] 一:Netty、NIO、多线程? 时隔很久终于又更新了!之前一直迟迟未动也是因为积累不够,后面比较难下手。过年期间@李林锋hw发布了一个Netty5.0架构剖析和源码解读 http://vdi...

黄亿华 ⋅ 2014/02/08 ⋅ 10

java.util.concurrent.atomic原子操作类包

这个包里面提供了一组原子变量类。其基本的特性就是在多线程环境下,当有多个线程同时执行这些类的实例包含的方法时,具有排他性,即当某个线程进入方法,执行其中的指令时,不会被其他线程打...

宋哥陈 ⋅ 2015/04/13 ⋅ 0

Netty与Reactor模式

引言 1.1 Netty、NIO、多线程 关于Netty与NIO、多线程之间的关系,可以参考@李林锋发布的一个Netty5.0架构剖析和源码解读的文章,在这篇文章中详细的介绍了Java I/O的演进过程和Linux I/O网络...

无寄语 ⋅ 2016/09/11 ⋅ 0

《Yaf零基础学习总结》系列技术文章整理收藏

《Yaf零基础学习总结》系列技术文章整理收藏 1关于Yaf的一些说明[转Yaf作者] 2Yaf零基础学习总结1-Yaf框架简介 3Yaf零基础学习总结2-Yaf框架的安装 4Yaf零基础学习总结3-Hello Yaf 5Yaf零基础...

开元中国2015 ⋅ 2015/05/30 ⋅ 1

成为Java GC专家系列

成为Java GC专家(1):深入浅出Java垃圾回收机制 成为Java GC专家(2):如何监控Java垃圾回收机制 成为Java GC专家(3):如何优化Java垃圾回收机制 成为Java GC专家(4):Apache的MaxClients参数...

HenrySun ⋅ 2016/06/21 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部