Netty
文章平均质量分 91
rickiyang
这个作者很懒,什么都没留下…
展开
-
Netty学习(四)-TCP粘包和拆包
我们都知道TCP是基于字节流的传输协议。那么数据在通信层传播其实就像河水一样并没有明显的分界线,而数据具体表示什么意思什么地方有句号什么地方有分号这个对于TCP底层来说并不清楚。应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段,之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。所以对于这个数据拆分成大包小包的问题就是我们原创 2017-03-28 09:17:28 · 2881 阅读 · 4 评论 -
Netty学习(二)-Helloworld Netty
这一节我们来讲解Netty,使用Netty之前我们先了解一下Netty能做什么,无为而学,岂不是白费力气!1.使用Netty能够做什么开发异步、非阻塞的TCP网络应用程序;开发异步、非阻塞的UDP网络应用程序;开发异步文件传输应用程序;开发异步HTTP服务端和客户端应用程序;提供对多种编解码框架的集成,包括谷歌的Protobuf、Jboss marshalling、Java序列化、压缩编解原创 2017-03-25 10:15:17 · 2803 阅读 · 5 评论 -
Netty学习(九)-Netty编解码技术之Marshalling
前面我们讲过protobuf的使用,主流的编解码框架其实还有很多种:①JBoss的Marshalling包②google的Protobuf③基于Protobuf的Kyro④Apache的ThriftJBoss Marshalling是一个Java对象的序列化API包,修正了JDK自带的序列化包的很多问题,但又保持跟java.io.Serializable接口的兼容;同时增加了一些可调的参数和附加的特原创 2017-05-16 22:13:38 · 4630 阅读 · 0 评论 -
Netty学习(八)-Netty的心跳机制
我们知道在TCP长连接或者WebSocket长连接中一般我们都会使用心跳机制–即发送特殊的数据包来通告对方自己的业务还没有办完,不要关闭链接。那么心跳机制可以用来做什么呢?Netty的心跳机制---IdleStateHandler。原创 2017-04-06 10:29:18 · 8808 阅读 · 0 评论 -
Netty学习(七)-Netty编解码技术以及ProtoBuf和Thrift的介绍
谈到序列化我们自然想到java提供的Serializable接口,在java中我们如果需要序列化只需要继承该接口就可以通过输入输出流进行序列化和反序列化。但是在提供很用户简单的调用的同时他也存在很多问题.目前的序列化过程中使用java本身的肯定是不行,使用二进制编码的话又的我们自己去手写,所以为了让我们少搬砖前辈们早已经写好了工具让我们调用,目前社区比较活跃的有google的Protobuf和thrift原创 2017-04-05 13:08:35 · 4138 阅读 · 1 评论 -
Netty学习(三)-Netty重要接口讲解
上一节我们写了一个HelloWorld,对于Netty的运行有了一定的了解,知道Netty是如何启动客户端和服务器端。这一节我们简要的讲解一下几个重要的接口,初步探讨Netty的运行机制,当然刚学Netty就深入原理肯定是很枯燥的,所以我们就点到为止。1. ChannelPipeLine和ChannelHandler在上一篇中我们在ChannelInitializer类的initChannel方法中原创 2017-03-26 18:10:10 · 11491 阅读 · 2 评论 -
Netty学习(六)-LengthFieldBasedFrameDecoder解码器
在TCP协议中我们知道当我们在接收消息时候,我们如何判断我们一次读取到的包就是整包消息呢,特别是对于使用了长连接和使用了非阻塞I/O的程序。上节我们也说了上层应用协议为了对消息进行区分一般采用4种方式。前面三种我们都说了,第四种是:通过在消息头定义长度字段来标识消息总长度。这个我们还没讲。当然Netty也提供了相应的解码器:LengthFieldBasedFrameDecoder。大多数的协议(私有原创 2017-04-01 00:12:55 · 15747 阅读 · 5 评论 -
Netty学习(一)-为什么选择Netty
前面我们简单学习了NIO。我们知道java的I/O模型一共有四种,分别是:传统的BIO,伪异步I/O,NIO和AIO。为了澄清概念和分清区别,我们还是先简单的介绍一下他们的概念,然后再去比较优劣。以及探讨我们为什么使用netty。1.概念澄清1.1 BIOBIO,即Blocking I/O。网络编程的基本模型是Client/Server 模型,也就是两个进程之间进行相互通信,其中服务端提供位置信息(原创 2017-03-24 13:01:14 · 8341 阅读 · 2 评论 -
Netty学习(五)-DelimiterBasedFrameDecoder
LineBasedframeDecoder属于第二种,今天我们要说的DelimiterBasedFrameDecoder和FixedLengthFrameDecoder属于第三种和第一种。DelimiterBasedFrameDecoder用来解决以特殊符号作为消息结束符的粘包问题,FixedLengthFrameDecoder用来解决定长消息的粘包问题。下面首先来用DelimiterBasedFrameDecode原创 2017-03-29 23:23:55 · 20228 阅读 · 1 评论 -
Netty学习(十)-Netty文件上传
今天我们来完成一个使用netty进行文件传输的任务。在实际项目中,文件传输通常采用FTP或者HTTP附件的方式。事实上通过TCP Socket+File的方式进行文件传输也有一定的应用场景,尽管不是主流,但是掌握这种文件传输方式还是比较重要的,特别是针对两个跨主机的JVM进程之间进行持久化数据的相互交换。而使用netty来进行文件传输也是利用netty天然的优势:零拷贝功能。很多同学都听说过nett原创 2017-05-28 14:14:52 · 18176 阅读 · 8 评论