![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
netty
文章平均质量分 86
清山随笔
这个作者很懒,什么都没留下…
展开
-
netty对象序列化传输机制(序)
4.4. 对象传输的另一种实现机制这种机制主要是为了应对其中一方不采用netty框架传输对象。实现方案:采用通用的ObjectInputStream和ObjectOutputStream将对象转换成byte数组,然后传输(即实际传输的是byte数组)。此种方式下无需设定编解码器就可传递对象,通过调试助手等终端也可以传输对象 (1) UDPServerPipelineFactory.java原创 2014-09-18 16:26:26 · 548 阅读 · 0 评论 -
关于UDP数据传输中出现的分包问题的一点解释
在测试UDP数据传输的过程中,发现客户端上传的数据有不完整现象,发现有时出现一个数据包分了两次接收的情况。目前客户端(以下称为终端)采用GPRS方式以UDP协议传输。对于此问题的分析,要追溯到TCP/IP 四层模型(以下为自底向上)链路层-->网络层-->传输层-->应用层UDP与TCP一样,属于传输层协议,而链路层有个MTU(最大传输单元)【因特网协议允许IP分片,这样就可以将数据包分成足够小的原创 2014-09-18 16:27:43 · 2988 阅读 · 0 评论 -
基于netty4的TCP短连接测试
本文中的代码做了一定优化,但是还不是很完全,欢迎指正工程结构图如下: TcpServer.javapackage com.lin.netty4.tcp;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelInitializer;import io.netty.channel.ChannelPipeline原创 2014-09-18 16:27:48 · 11502 阅读 · 3 评论 -
网络中出现TCP、UDP粘包、分包的两点解决办法
粘包产生原因:先说TCP:由于TCP协议本身的机制(面向连接的可靠地协议-三次握手机制)客户端与服务器会维持一个连接(Channel),数据在连接不断开的情况下,可以持续不断地将多个数据包发往服务器,但是如果发送的网络数据包太小,那么他本身会启用Nagle算法(可配置是否启用)对较小的数据包进行合并(基于此,TCP的网络延迟要UDP的高些)然后再发送(超时或者包大小足够)。那么这样的话,服务器在接原创 2014-09-18 16:28:03 · 676 阅读 · 0 评论 -
Netty in Action 翻译(第一章)
Netty与Java NIO APIs本章包括 Netty的体系结构为什么我们需要非阻塞IO(NIO)阻塞IO与非阻塞IO基于JDK的NIO存在的问题与Netty的解决办法本章虽然是Netty的介绍章节,但重点却是Java的NIO API,如果你是JVM网络方面的新手,本章是个不错的开始,同时对于经验丰富的Java开发人员,也是一个不错的复习机会。如果你对NIO与NIO2(AIO)比原创 2014-09-18 16:28:21 · 795 阅读 · 0 评论 -
SPDY:Google开发的下一代HTTP协议
SPDY:Google开发的下一代HTTP协议概述SPDY是Google宣布正在开发的下一代网络协议,SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强。HTTP自上世纪90年代问世以来,已有二十年的历史,期间互联网本身发生了很大的变化,也使得HTTP的许多不足暴露了出来,现在它已经不能满足许多web app的要求。Google表示,引入SPDY协议后,在实验室测试中页面加载速原创 2014-09-18 16:28:27 · 1037 阅读 · 0 评论 -
Netty数据包大小的确定
Netty接收包大小的确定技术点描述关于NETTY内部TCP、UDP数据包问题当客户端数据量过大时,TCP协议会自动分包进行数据传输(何时分包,如何分包,每包大小尚未研究), 使用netty做server时,netty会根据当前接收到的数据包大小(适用于当前连接),自动调整下次接收到数据包大小(TCP默认大小为1024,当数据包不超过1024时,会一次接收完毕,当超过1024时,下次自动增长原创 2014-09-18 16:28:30 · 21977 阅读 · 2 评论 -
Netty使用protobuf作为通信协议
Netty中使用protobuf环境准备下载protoc代码生成器和源码包:http://code.google.com/p/protobuf/downloads/list, protobuf-2.4.1.tar.bz2:主要是生成protobuf-2.4.1.jar包,操作需要安装maven,可以到网上下载这个Jar包,所以这里略。 protoc-2.4.1-win32.zip原创 2014-09-18 16:28:32 · 1973 阅读 · 0 评论 -
Netty中文件上传的实现
技术点描述上传大文件并且没有内存压力的文件服务。实现方案Netty利用块(HttpChunk)对开发文件服务器端做了很好的实现:内容存储方式: 内存、硬盘、混合存储。参考源码包源码包: 接口/抽象类/类说明:InterfaceHttpData(interface):实现该接口的对象可以用HttpPostRequestEncoder/Decoder编解码HttpDat原创 2014-09-18 16:28:35 · 2846 阅读 · 0 评论 -
Netty的超时机制
Netty超时机制学习技术点描述ReadTimeoutHandler读取数据超时处理WriteTimeoutHandler写数据超时处理IdleStateHandler状态空闲处理 通过以上三种方式,可以轻松实现SOCKET长连接的心跳包机制。另要注意的是这里所说的超时是指逻辑上的超时,而非TCP连接超时。实现方案ReadTimeoutHandler,WriteTimeoutHa原创 2014-09-18 16:28:37 · 4788 阅读 · 1 评论 -
netty4.0之TCP的server与client初探(与3.X版本变化)DEMO
本文共有4个类分别为TcpClient.java、TcpClientHandler.java、TcpServer.java、TcpServerHandler.java。(1)TcpServer.javapackage com.lin.netty4.tcp;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.Channe原创 2014-09-18 16:27:41 · 744 阅读 · 0 评论 -
netty 数据分包、组包、粘包处理机制(一)
1. frame包整体功能描述 此包主要作用于对TCP/IP数据包的分包和包重组,常用于数据的流传输,是扩展的解码器。 包目录结构如下: 2. 包中各类功能详解 (1) FrameDecoder 抽象类,将ChannelBuffers中的二进制数据转换成有意义的数据帧(frame)对象,一般不直接调用,提供给此包中的FixedLe原创 2014-09-18 16:26:29 · 1666 阅读 · 0 评论 -
netty 数据分包、组包、粘包处理机制(二)
(5) LengthFieldBasedFrameDecoder常用的处理大数据分包传输问题的解决类,先对构造方法LengthFieldBasedFrameDecoder中的参数做以下解释说明“maxFrameLength:解码的帧的最大长度lengthFieldOffset :长度属性的起始位(偏移位),包中存放有整个大数据包长度的字节,这段字节的其实位置lengthFieldLength:长原创 2014-09-18 16:26:32 · 3721 阅读 · 0 评论 -
TCP三次握手协议
三次握手针对于TCP的连接(因TCP连接是可靠的连接)而采用的。 名词解释: 针对本文中的用到的一些名词,作如下解释: SYN包:同步序列号,他是TCP连接的第一个数据包,非常小,此包表明发送方已做好会话准备,只有发送服务请求方才发送SYN包 ACK包:应答字段 具体描述: 下面是对TCP三个握手建立一个连接的具体描述: 第一次握手:建立连接时,客户端发送syn包到服务器,并将客户端原创 2014-09-18 16:26:34 · 708 阅读 · 0 评论 -
Netty in Action 翻译(目录)
目录第一部分:现在开始1. Netty 与Java NIO APIs2. 你的第一个netty应用程式3. Netty 起源第二部分: netty的核心部分4. 数据传输Transports5.缓冲区 Buffers6. channel处理程式ChannelHandler7.编解码 Codec8. ChannelHandlers与Codecs的保证9. netty应用引导Bootstrapping原创 2014-09-18 16:28:19 · 676 阅读 · 0 评论 -
Netty学习笔记
1.新建NettyTest工程工程结构如图所示:2.各个类: ClientPipelineFactory.java public class ClientPipelineFactory implements ChannelPipelineFactory { @Override public ChannelPipeline getPipeline() thr原创 2014-09-18 16:26:05 · 492 阅读 · 0 评论 -
Netty中对象序列化传输机制研究分析
1. 技术点描述本文档主要说明如何利用netty进行对象传输2. 实现方案前提条件:对象须实现序列化。基本思想:借助netty自带的ObjectDecoder和ObjectEncoder类实现对象序列化的传输3. 参考源码包源码包:org.jboss.netty.handler.codec.serialization3.1. ObjectDecoder此类主要完原创 2014-09-18 16:26:13 · 501 阅读 · 0 评论 -
基于Netty的HTTP通信研究分析
1.HTTP服务器的创建 服务器创建时的代码同TCP完全相同。 /**HTTP方式(同TCP)*/ static ChannelFactory HTTPCHANNEL_FACTORY = newNioServerSocketChannelFactory(Executors.newCachedThreadPool(), Executors.newCachedThrea原创 2014-09-18 16:26:16 · 504 阅读 · 0 评论 -
Netty中execution包功能详解
技术点描述 Netty中关于多线程处理的代码很多(netty框架的实现本身就是异步处理机制),此文档仅针对于execution包的功能做详细解说。 以下是整个包的目录结构: 包中的调用关系如下图所示: 实现方案 参考源码包 以下是对此包中的源码的分析(请注意后四个类为此包中最重要的类) ChannelEventRunnableFilter 此接口定义了一个抽象方法: bo原创 2014-09-18 16:26:19 · 896 阅读 · 0 评论 -
Netty多线程处理机制
技术点描述 本文主要研究NioServerSocketChannelFactory类和NioDatagramChannelFactory类, 以及这两个类的各自作用。 由于基于pipelineFactory的线程池的配置已在前一节(Netty中execution包功能详解 )中做了详细说明,而channelFactory中的线程池的配置并未做说明,本文档重点阐述channelFactor原创 2014-09-18 16:26:21 · 1841 阅读 · 0 评论 -
Netty多线程配置机制
技术点描述 本文主要是对前一节(Netty多线程机制)中的一些未提及的有用的类(可控制可配置类)做进一步解释说明,由于NIO包和OIO包中类比较多,此文仅介绍与多线程相关的且有对外开放接口的类进行分析。 NIO包结构如下图所示: 本文档主要讲解此包中的 DefaultNioDatagramChannelConfig类、 NioDatagramChannelConfig接口、 NioSo原创 2014-09-18 16:26:24 · 1686 阅读 · 0 评论 -
Netty中队列(部分)的处理机制
Netty中队列(部分)的处理机制 概述 本意是探究netty框架中的队列实现机制,为以后的大数据量并发做前期准备,或者可通过修改其队列实现机制来增大netty框架的并发量,以满足项目需求,然而,netty框架中的队列并未放置在单独的一个包中处理,有针对具体情况做的具体分析,此文档只分析了queue包中的队列实现机制。 以下是包结构图: 类功能分析BlockingR原创 2014-09-18 16:28:40 · 3611 阅读 · 0 评论