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