混傳數據總結與梳理

一、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是由發送者持有的。如果數據沒有發送完成,重複執行該過程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章