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