Netty初学

不羁的心 提交于 2019-11-30 07:58:27

看了一天的netty.总结如下:

看之前,要对nio的机理又一定了解

入门文档的英文版:https://netty.io/wiki/user-guide-for-4.x.html

入门文档的中文版:https://wiki.jikexueyuan.com/project/netty-4-user-guide/

但是这个着重讲怎么用.看完之后只能让代码跑起来.

讲的比较细的话,可以看 ( 一起学Netty )https://blog.csdn.net/linuu/article/details/51306480.这是一个二十篇的教程.

Netty主要关心的问题有:

消息的处理机制:Netty处理消息,是通过handler,内置的handler和自定义的handler,都继承了统一的HandlerAdapter.所有的handler,塞进一个管道中,上一个处理完,传递给下一个(通过ChannelHandlerContext.fire开头的方法).

消息的编码/解码:Netty内置了很多编码器,甚至包括google的protobuf.练习的话,可以用string相关的编码器.做RPC的话可以直接用ProtoBuf.高级应用的话,可以基于ByteBuf来做.

粘包问题:Netty提供了很多方式来处理粘包.主要是再decode上下功夫.提供的策略包括:

  • LineBasedFrameDecoder(基于行分隔符)
  • DelimiterBasedFrameDecoder(添加特殊分隔符报文来分包)
  • FixedLengthFrameDecoder(使用定长的报文来分包)
  • LengthFieldBasedFrameDecoder(RPC常用,基于特定的字段头.)

心跳:netty提供了心跳检测的设置,如果客户端在指定时间内没有和服务器端通信的需要,就会发个心跳包过去.

==========

综上,网络编程还是比较麻烦的事情.做个demo是一回事,做工业级的代码是另外一回事.即使有这样库的帮助,仍然需要投入很多精力.如果快速开发,还是用http吧哈哈哈.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!