混传数据总结与梳理

一、Connector类

Connector中的SocketChannel是Sender和Receiver的实现类,因此Selector具有接收和发送的功能。

发送时,将SocketChannel封装成一个StringSendPacket,接收时将StringReceivePacket解析为Striing

二、发送接收的流程

发送者和接收者是一个整体,都是由SocketChannelAdapter中SocketChannel实现的。

首先,对数据IoArgs进行读(写)。

通过IoProvider进行事件调度,包括读的事件调度ReadSelector、写的事件调度WriteSelector。sender或者receiver会通过IoProvider进行注册。

读或者写操作时会触发相应的读、写事件机制,并通过线程回调回去。在回调中完成事件真正的发送、读取操作。

三、解决数据传出过程中出现的问题时使用的类

发送时,将数据Packet放到队列末尾中,然后再从队列头中获取一个Packet,将Packet中的数据写入到IoArgs里面去。

接着将IoArgs注册到Sender,调用Sender的异步发送的方法,将IoArgs、listener作为参数,当sender经过Selector事件机制回调后,发送IoArgs中的数据。发送完成后,执行发送完成的回调。该listener是由发送者持有的。如果数据没有发送完成,重复执行该过程。

发布了174 篇原创文章 · 获赞 115 · 访问量 83万+

猜你喜欢

转载自blog.csdn.net/nicolelili1/article/details/104339137