-
Netty-08-通讯模型框架 libevent
libevent
libevent – an event notification library
功能
libevent API提供了一种机制,用于在文件描述符上发生特定事件或达到超时后执行回调函数。
此外,libevent还支持由于信号或定期超时引起的回调。
libevent旨在替换事件驱动的网络服务器中的事件循环。应用程序只需调用event_dispatch(),然后动态添加...
2017-11-16 11:23:06 |
Netty
-
Netty-07-通讯模型之 NIO
NIO 编程
JDK 1.4中的java.nio.*包中引入新的Java I/O库,其目的是提高速度。
实际上,“旧”的I/O包已经使用NIO重新实现过,即使我们不显式的使用NIO编程,也能从中受益。
速度的提高在文件I/O和网络I/O中都可能会发生,但本文只讨论后者。
我个人比较倾向于 non-blocking 这种称呼。
简介
NIO我们一般认为是New I/O(也是官方的叫...
2017-11-16 11:23:06 |
Netty
-
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