netty学习笔记

Server:

bootstrap.option(ChannelOption.SO_BACKLOG,100)

private final ByteBuf firstMessage;

firstMessage = Unpooled.buffer(EchoClient.SIZE);

for(int i = 0; i<sendNumber; i++){

firstMessage.writeByte((byte)i);

}

Server:

// 以("\n")为结尾分割的 解码器

pipeline.addLast("framer", new DelimiterBasedFrameDecoder(8192, Delimiters.lineDelimiter()));

// 字符串解码和编码

pipeline.addLast("decoder", new StringDecoder());

pipeline.addLast("encoder", new StringEncoder());

//自己的逻辑Handler

pipeline.addLast("handler", new HelloServerHandler());

Client:

/*

* 这个地方的 必须和服务端对应上。否则无法正常解码和编码

*/

pipeline.addLast("framer", new DelimiterBasedFrameDecoder(8192, Delimiters.lineDelimiter()));

pipeline.addLast("decoder", new StringDecoder());

pipeline.addLast("encoder", new StringEncoder());

pipeline.addLast("handler", new HelloClientHandler());

ByteBuf与java的ByteBuffer类似,Byte数组的缓冲区。

ByteBufAllocator,字节缓冲区分配器

Future 获取异步操作的结果,异步操作的通知回调。

Promise是可写的Future

时间: 2024-08-09 13:29:04

netty学习笔记的相关文章

(二)Netty学习笔记之服务端启动

本文将不会对netty中每个点分类讲解,而是一个服务端启动的代码走读,在这个过程中再去了解和学习,这也是博主自己的学习历程.下面开始正文~~~~ 众所周知,在写netty服务端应用的时候一般会有这样的启动代码: (代码一) 1 EventLoopGroup bossGroup = new NioEventLoopGroup(1); 2 EventLoopGroup workerGroup = new NioEventLoopGroup(); 3 try { 4 ServerBootstrap b

Netty学习笔记之一(Netty解析简单的Http Post Json 请求)

一,HTTP解码器可能会将一个HTTP请求解析成多个消息对象. ch.pipeline().addLast(new HttpServerCodec()); ch.pipeline().addLast(new ParseRequestHandler()); 经过HttpServerCodec解码之后,一个HTTP请求会导致:ParseRequestHandler的 channelRead()方法调用多次(测试时 "received message"输出了两次) @Override pub

Netty学习笔记(一)

Netty是一个高性能的NIO框架,相比与IO编程需要编写大量的代码,Netty的使用更加简单.Netty的主要功能是负责网络传输,dubbo,rocket MQ以及elasticsearch中都采用Netty做为网络传输框架. Netty的特性(以下特性来自百度,但是我感觉对于开发者来时主要还是用起来比较简单......) 1.设计 针对多种传输类型的统一接口 - 阻塞和非阻塞 简单但更强大的线程模型 真正的无连接的数据报套接字支持 链接逻辑支持复用 2.易用性 大量的 Javadoc 和 代

netty学习资源收集

Netty学习笔记 Netty+In+Action中文版.pdf

Dubbox学习笔记

Dubbox 学习笔记,本文观点仅代表个人理解,如有错误之处,请留言指正,谢谢. 本文主要根据Dubbox用户手册进行学习,从提供的配置去看dubbox的全貌,没有从源码角度去分析,而是从应用的角度上去学习. 1.dubbo配置学习 1)  dubbo:protocol   服务提供方协议配置,如果需要支持多协议,我可以声明多个 dubbo:protocol标签,并在 dubbo:service标签的protocol属性中指定. dubbo:protocol标签配置项如下: id name po

SO_REUSEPORT学习笔记

SO_REUSEPORT学习笔记 时间 2015-02-12 16:50:00 BlogJava-技术区 原文  http://www.blogjava.net/yongboy/archive/2015/02/12/422893.html 主题 Socket 前言 本篇用于记录学习SO_REUSEPORT的笔记和心得,末尾还会提供一个bindp小工具也能为已有的程序享受这个新的特性. 当前Linux网络应用程序问题 运行在Linux系统上网络应用程序,为了利用多核的优势,一般使用以下比较典型的多

Xitrum学习笔记12 - 范围

一.Request 参数种类 1. 文本参数:名为textParams,类型为 scala.collection.mutable.Map[Sting, Seq[String]] 1)queryParams:URL中 ? 后面的参数,例:http://example.com/blah?x=1&y=2 2)bodyTextParams:在POST请求体里的参数 3)pathParams:嵌入到URL的参数,例:GET("articles/:id/:title") 从1)到3),同名

vector 学习笔记

vector 使用练习: /**************************************** * File Name: vector.cpp * Author: sky0917 * Created Time: 2014年04月27日 11:07:33 ****************************************/ #include <iostream> #include <vector> using namespace std; int main

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详细,自己在看它的文档和代码时写了一些demo和笔记,还有它实现的原理记录一下 学习Caliburn.Micro要有MEF和MVVM的基础 先说一下他的命名规则和引导类 以后我会把Caliburn.Micro的 Actions IResult,IHandle ICondu