-
Netty-07-通讯模型
Unix中的I/O模型
Unix定义了五种I/O模型
阻塞I/O
非阻塞I/O
I/O复用(select、poll、linux 2.6种改进的epoll)
信号驱动IO(SIGIO)
异步I/O(POSIX的aio_系列函数)
异步的处理
异步无非是通知系统做一件事情。然后忘掉它,自己做其他事情去了。很多时候系统做完某一件事情后需要一些后续的操作。怎么办?这时候就是告诉异步调...
2017-11-16 11:23:06 |
Netty
-
Netty-07-通讯模型之 BIO
传统的BIO编程
网络编程的基本模型是C/S模型,即两个进程间的通信。
服务端提供IP和监听端口,客户端通过连接操作想服务端监听的地址发起连接请求,通过三次握手连接,如果连接成功建立,双方就可以通过套接字进行通信。
传统的同步阻塞模型开发中,ServerSocket负责绑定IP地址,启动监听端口;Socket负责发起连接操作。连接成功后,双方通过输入和输出流进行同步阻塞式通信。
简...
2017-11-16 11:23:06 |
Netty
-
Netty-07-通讯模型之 AIO
java 中的 AIO
jdk7中新增了一些与文件(网络)I/O相关的一些api。这些API被称为NIO.2,或称为AIO(Asynchronous I/O)。
AIO最大的一个特性就是异步能力,这种能力对socket与文件I/O都起作用。
AIO其实是一种在读写操作结束之前允许进行其他操作的I/O处理。AIO是对JDK1.4中提出的同步非阻塞I/O(NIO)的进一步增强。
关于NI...
2017-11-16 11:23:06 |
Netty
-
Netty-06-基础组件之 ChannelHandler
ChannelHandler
整体体系
作用
接受客户端的连接和创建连接只是应用程序中的一步,更加重要的还是处理传入传出的数据。
netty提供了强大的事件处理机制,允许用户自定义ChannelHandler的实现来处理数据。
方法
ChannelHandler用于处理Channel对应的事件
ChannelHandler接口里面只定义了三个生命周期方法,我们主要实现它的子...
2017-11-16 11:23:06 |
Netty
-
Netty-05-异步结果的获取 ChannelFuture
异步
异步的概念和同步相对。
当一个异步过程调用发出后,调用者不能立刻得到结果。
实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。
异步的好处是不会造成阻塞,在高并发情形下会更稳定和更高的吞吐量。
ChannelFuture
说到Netty中的异步,就不得不提ChannelFuture。
Netty中的IO操作是异步的,包括bind、write、connect...
2017-11-16 11:23:06 |
Netty
-
Netty-04-基础组件之 Callback
Callback 入门例子
代码
TestServer
package com.github.houbb.netty.inaction.components.callback;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelFuture;
import io.netty.ch...
2017-11-16 11:23:06 |
Netty
-
Netty-03-基础组件之 Channel
Channel
官方简介
网络套接字或能够执行I/O操作(如读取,写入,连接和绑定)的组件的连接。
Channel 为用户提供:
通道的当前状态(例如它是否打开?是否已连接?),
通道的配置参数(例如接收缓冲区大小),
通道支持的I/O操作(例如,读,写,连接和绑定),以及
ChannelPipeline,用...
2017-11-16 11:23:06 |
Netty
-
Netty-03-基础组件简介
知识回顾
上一节我们写了一个入门的案例。
其中用到了很多类,本节就对使用到的每一个类进行初步的讲解。
在我们更加详细地研究Netty 的各个组件时,我们将密切关注它们是如何通过协作来支撑这些体系结构上的最佳实践的。
Channel、EventLoop 和ChannelFuture
接下来的各节将会为我们对于Channel、EventLoop 和ChannelFuture 类进行的讨...
2017-11-16 11:23:06 |
Netty