NIO的通信步驟:
①創(chuàng)建ServerSocketChannel,為其配置非阻塞模式。
②綁定監(jiān)聽,配置TCP參數(shù),錄入backlog大小等。
③創(chuàng)建一個獨立的IO線程,用于輪詢多路復(fù)用器Selector。
④創(chuàng)建Selector,將之前創(chuàng)建的ServerSocketChannel注冊到Selector上,并設(shè)置監(jiān)聽標識位SelectionKey.OP_ACCEPT。
⑤啟動IO線程,在循環(huán)體中執(zhí)行Selector.select()方法,輪詢就緒的通道。
⑥當輪詢到處于就緒狀態(tài)的通道時,需要進行操作位判斷,如果是ACCEPT狀態(tài),說明是新的客戶端接入,則調(diào)用accept方法接收新的客戶端。
⑦設(shè)置新接入客戶端的一些參數(shù),如非阻塞,并將其繼續(xù)注冊到Selector上,設(shè)置監(jiān)聽標識位等。
⑧如果輪詢的通道標識位是READ,則進行讀取,構(gòu)造Buffer對象等。
⑨更細節(jié)的問題還有數(shù)據(jù)沒發(fā)送完成繼續(xù)發(fā)送的問題......