netty
huanshirenjian
这个作者很懒,什么都没留下…
展开
-
Netty系列1-网络模型
1.OSI七层模型1.1 OSI七层模型OSI(Open System Interconnect)全称是开放系统互连参考模型。其七层分为:(1)物理层物理层并不是指物理媒体本身,而是指利用物理媒体进行物理连接和数据传输。物理层的媒体包括光纤、电缆。物理设备保护计算机、手机登。数据通信设备包括调制解调器等。连接器包括接头、插头。物理层的功能:为数据端设备提供传输数据的通路,即将多个物...原创 2019-05-01 23:02:54 · 451 阅读 · 0 评论 -
Netty系列5-netty介绍
1.netty的组件1.1 ChannelChannel 是 NIO 基本的结构。官方解释:它代表了一个用于连接到实体如硬件设备、文件、网络套接字或程序组件,能够执行一个或多个不同的 I/O 操作(例如读或写)的开放连接。简单的来说Channel就是通信的载体,通过客户端和服务端通过它进行通信、读写数据。1.2 CallbackCallback就是回调,回调在java中很常见,通常是提供...原创 2019-05-13 10:53:32 · 378 阅读 · 0 评论 -
Netty系列4-buffer
(1)bufferNIO通信中数据不会和通道直接交互。对于读来说,数据总是先从通道读到缓冲,应用程序再读缓冲的数据。对于写,数据也是先写入缓冲,再通过通道把缓冲的数据发送出去。缓冲区本质上是一块可以读写的内存,这块内存被包装成NIO Buffer对象,并提供了一组方法来访问该内存。(2)重要属性capacity:Buffer内存块的大小。一旦Buffer满了,需要将其清空(通过读数据或者...原创 2019-05-11 23:59:42 · 381 阅读 · 0 评论 -
Netty系列3-BIO、AIO、NIO
客户端和服务端通信本质上就是服务端监听端口,客户端发起连接请求,通过三次握手连接,如果连接成功建立,双方就可以通过套接字socket进行通信。根据通信实现方式的不同又分为BIO、AIO、NIO三种。1.BIOBIO是同步阻塞模型。通常由一个Acceptor线程监听客户端的连接,接收到连接请求后为每个客户端都创建一个新线程进行处理,最后将响应通过输出流返回给客户端,线程销毁。BIO最大的缺点...原创 2019-05-11 22:47:31 · 315 阅读 · 0 评论 -
Netty系列9-服务端源源码分析
1. 服务端源码分析我们以一个入门级别的服务端代码进行分析,这里对代码添加编号注释。这里先有个概念,netty其实就是对原生的java nio编程进行了封装,所以整个过程的分析就本质就是找netty是怎么封装的。 /*线程组*/ EventLoopGroup group = new NioEventLoopGroup();//1 EventLoopGroup w...原创 2019-05-16 12:34:08 · 225 阅读 · 0 评论 -
Netty系列8-服务器推送
一般客户端和服务端交互是由客户端发起一个请求,服务端回答响应。但有时候服务端需要主动的推送数据,比如视频、弹幕、新闻实时刷新等,这时候就用到了服务器推送技术。1.Ajax短轮询Ajax短轮询就是前端通过ajax不断向服务端发送请求,这种方式最简单但是性能最低,尤其在服务端未使用netty等高性能框架下。客户端代码样例:function showTime(){…//发送请求setInte...原创 2019-05-14 19:56:22 · 1665 阅读 · 0 评论 -
Netty系列7-编解码器
编码器是将消息转换为适合于传输的格式,一般是二进制;而对应的解码器则是将网络字节流转换回应用程序的消息格式。因此,编码器操作出站数据,而解码器处理入站数据。我们上一篇文章解决粘包拆包用到的也是编解码器。1. 解码器解码器是负责将入站数据从一种格式转换到另一种格式的,所以解码器实现ChannelInboundHandler。Netty提供了丰富的解码器抽象基类,主要分两类:1.1 将字节解码为...原创 2019-05-13 23:58:19 · 528 阅读 · 0 评论 -
Netty系列6-TCP粘包拆包
(1)TCP粘包拆包现象假设客户端分别发送了两个数据包D1和D2给服务端,由于服务端一次读取到的字节数是不确定的,故可能存在以下4种情况。假设客户端分别发送了两个数据包D1和D2给服务端,由于服务端一次读取到的字节数是不确定的,故可能存在以下5种情况。服务端分两次读取完数据,第一次读到D1,第二次读到D2,这里没有粘包和拆包;服务端一次性读取完数据,D1和D2粘合在一起,这里发生TCP...原创 2019-05-13 18:58:05 · 585 阅读 · 0 评论 -
Netty系列2-IO模型
网络编程中IO分为阻塞和非阻塞、同步和异步。1.同步和异步同步和异步关注的是结果消息的通信机制同步:同步的意思就是调用方需要主动等待结果的返回异步:异步的意思就是不需要主动等待结果的返回,而是通过其他方式回调函数等。2.阻塞和非阻塞阻塞和非阻塞主要关注的是等待结果返回调用方的状态阻塞:是指结果返回之前,当前线程被挂起,不做任何事非阻塞:是指结果在返回之前,线程可以做一些其他事,不会...原创 2019-05-02 00:38:53 · 276 阅读 · 0 评论 -
Netty系列10-客户端源码分析
客户端的流程和服务端的大致相同,在服务端分析过的这里不再分析,看这篇文章前可以先看下服务端源码分析的文章。先大致看下客户端的代码。 public void start() throws InterruptedException { EventLoopGroup group = new NioEventLoopGroup();/*线程组*/ try { ...原创 2019-05-17 00:22:24 · 284 阅读 · 0 评论