Linux的NIO實現方式
http://www.lxweimin.com/p/718c24af400f
NIO通信步驟
1.創建ServerSocketChannel,為它配置非阻塞模式
2.綁定監聽,配置TCP參數,錄入backlog大小等等
3.創建一個獨立的IO線程,用于輪詢多路復用器Selector
4.創建Selector,將之前創建的ServerSocketChannel注冊到Selector上,并設置監聽標識位SelectionKey.ACCAPT
5.啟動IO線程,在循環體中執行Selector.select()方法,輪詢就緒通道
6.當輪詢到處于就緒的通道時,進行操作位判斷,如果是ACCEPT狀態,說明新的客戶端接入,則調用accept方法接受新的客戶端
7.設置新接入客戶端的一些參數,如非阻塞、并將其通道繼續注冊到Selector之中,設置監聽標識位等
8.如果輪詢的通道操作位是READ,則進行讀操作
Netty通信步驟
1.創建兩個NIO線程組,一個專門用于網絡事件處理(接受客戶端連接),另一個則進行網絡通信讀寫
2.創建一個ServerBootstrap對象,配置Netty的一系列參數,例如接受傳出參數的緩存大小等等
3.創建一個實際處理數據的類ChannelInitializer,進行初始化準備工作,比如設置接受傳出數據的字符集
、格式、已經實際處理數據的接口
4.綁定端口,執行同步阻塞方法等待服務器端口啟動即可。