原文地址: http://rox-xmlrpc.sourceforge.net/niotut/
1. Use a single selecting thread
使用单线程处理selectors, selectors are threadsafe their key sets are not
2. Modify the selector from the selecting thread only
从选择线程里修改selector
3. Set OP_WRITE only when you have data ready
仅仅准备好写数据的时候, 才设置OP_WRITE
4. Alternate between OP_READ and OP_WRITE
在OP_READ和OP_WRITE之间交替处理
流程:
1. Server端:
(1) 创建一个包含Selector的线程
(2) 初始化Selector, bind服务器端的channel, 此channel监听OP_ACCEPT
(3) 当有链接进程来, 创建channel, selector上监听此chanel的OP_READ
(4) channel上有数据进来后, 读取数据, 扔给业务线程处理此channel的数据, 最后, 回写数据时,
将数据传递给Selector线程, 特别注意, 回写时, 要wakeup() selector, 避免一直在OP_ACCEPT和
OP_READ上等待
(5) selector上要写数据的channel, 改为监听OP_WRITE
(6) 向channel里写数据, 若数据写完, 则改监听为OP_READ
2. Client端:
(1) 创建一个Selector
(2) 发送数据之前, 创建到服务器段的链接, 注册并添加OP_CONNECT的监听, 同时先缓存要写的数据, selector要被wakeup, 方便处理建立链接的监听
(3) 若简历链接成功, 完成连接建立, 改为监听OP_WRITE
(4) 当要发送的数据完成后, 改监听为OP_READ
(5) 读取数据, 并处理
只要不是selector的select后续的处理, 其他异步的写数据, client建立链接等, 均需要调用selector的wakeup
相关推荐
NioServer.java
java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java...
同时整个服务端的流程处理,建立于事件机制上。在 [接受连接->读->业务处理->写 ->关闭连接 ]这个 过程中,触发器将触发相应事件,由事件处理器对相应事件分别响应,完成服务器端的业务处理。...
Java,NIO,教程 非堵塞IO编程
NULL 博文链接:https://marcocs410.iteye.com/blog/981157
基于java nio的服务器与客户端的开发指南
其中NioServer是服务器端,NioClient是客户端,AClient、BClient、CClient是具体的客户。通过服务端和客户端的Channel通道,客户可以进行读写操作。在现今的聊天软件中,NIO都是其中不可或缺的一部分,希望诸位不要...
java bio nio aio socket
NIO编程实现实例,
NIO编程技术指南_预览版
《NIO与Socket编程技术指南》_高洪岩
java基于nio的通信实例,带UML结构图及server、client源码。
非常详细地讲解了NIO中的缓冲区、通道、选择器、编码,以及使用Socket技术实现TCP/IP和UDP编程,细化到了演示全部SocketOption的特性,这对理解基于NIO和Socket技术为基础所开发的NIO框架是非常有好处的,本书以案例...
Ioserver java Nio socket 框架 是个不错的NIO 通讯框架,本来想学习mina框架,看了看mina的源码太头痛,本人觉得看懂了Ioserver 再看mina的框架,想多的学习 java NIO 的也可以下载 看看,很值得学习啊!!!
NIO非阻塞通讯模式!NIO非阻塞通讯模式!
NIO与Netty编程-课程讲义,包含 BIO、NIO、Io的介绍,NIO网络聊天的案列,自定义RPC的实现与设计
深入解析NIO网络通讯编程,全套视频加源码以及开发文档祥讲。
AIO,NIO编程视频
Java NIO 网络编程初探 1. Java NIO Java 1.4 版本添加了一个新的IO API,称为NIO(New IO)。NIO拥有所有IO的功能,但是操作方法却完全不一样。NIO支持面向缓冲区的、基于通道的IO操作。能够更加高效的进行IO操作。...