Java IO,Socket非阻塞通信流程
这里我们使用一个内嵌的永久循环,来让Socket成为一个非阻塞的通信流程。
![v2-c6602eecfd06bfd8cf5bf8eee6656146_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=c2fc2a87-0230-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-c6602eecfd06bfd8cf5bf8eee6656146_b.jpg)
如上图所示,ServerSocket是我们自建的一个类,通过启动线程,且线程内置一个真循环,防止accept阻塞;
在客户端监听类上,将监听到的socket作为参数,传递到客户端监听类上,并再次启动线程,获取一个InputStream,同时再次在这个刚刚启动线程内置一个真循环,为的是不断获取信息并回写;
这里要注意的是,第一个真循环是保证获取新连接不会阻塞,第二个真循环是保证不停的获取客户端信息并回写;
关于客户端则通过端口和IP,启动线程,通过一个循环不停的向服务端写数据;
Netty入门
基于上面的图,我们也可以学习Netty相关的基础入门。
![v2-23e25d1237f0a12040891235c963c5da_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=c2fc2a87-0230-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-23e25d1237f0a12040891235c963c5da_b.jpg)
NioEventLoop(事件循环)
1、新连接接入
2、连接上的数据读取
Channel(抽象连接)
Socket、SocektChannel(IONIO)抽象
ChannelHandler(业务逻辑处理)
读写数据期间的业务层
PipeLine(动态链处理)
多个ChannelHandler组成,让消息可以层层处理
ByteBuf(数据接收)
基本的数据处理基于ByteBu