网络编程模型 nio
1.简介 nio 是new io的简称,1.4之后提供。特性:为所有的原始类型提供缓存支持(Buffer),字符集编码解码解决方案,channel一个原始的i/o抽象,支持锁和内存映射文件的文件访问接口,提供多路(non-blcoking)非阻塞式的高伸缩性网络。 2.比较 bio 同步阻塞,jdk1.4之前使用,阻塞到读写方法,阻塞到线程来提高并发性能,效果一般 nio 同步非阻塞io,jdk1.4后,linux多路复用技术,实现io的轮询方式,目前是主流的网络通信模式,netty 框架, aio 异步非阻塞io ,jdk1.7后,基于linux的epoll模式,目前使用较少, 3.基本编程模型 服务端: 核心api ServerSocket 流程 ; 先创建一个服务,然后绑定在服务器的ip地址和端口 等待客户端的链接请求 收到连接请求后,接受请求,建立了一个tcp连接 从建立的连接中获取到socket输入、输出流(同步阻塞) 通过两个流进行数据的交互 客户端: 核心api Socket 流程 : 先向服务端请求连接 一旦被服务器接受,连接就创建好了 从tcp连接中获取socket输入、输出流 通过两个流进行数据的交互 3.原理 阻塞和非阻塞:阻塞和非阻塞是进程在访问数据时,数据是否准备就绪的一种处理方式,当数据没有准备好的时候, 阻塞是往往需要等待缓冲区中的数据准备好之后才处理