-
wangluo 編程
查看全部 -
NIO編程實(shí)現(xiàn)步驟
第一步:創(chuàng)建Selector
第二步:創(chuàng)建ServerSocketChannel,并綁定監(jiān)聽端口
第三步:將Channel設(shè)置為非阻塞模式
第四步:將Channel注冊(cè)到Selector上,監(jiān)聽連接事件
第五步:循環(huán)調(diào)用Selector的select方法,監(jiān)測(cè)就緒情況
第六步:調(diào)用selectedKeys方法獲取就緒的channel
第七步:判斷就緒事件種類,調(diào)用業(yè)務(wù)處理方法
第八步:根據(jù)業(yè)務(wù)需要決定是否再次注冊(cè)監(jiān)聽事件,重復(fù)執(zhí)行第三步操作
查看全部 -
Selector 選擇器/多路復(fù)用器
作用:I/O就緒選擇
地位:NIO網(wǎng)絡(luò)編程的基礎(chǔ)
SelectionKey提供四個(gè)常量值
連接就緒?connect
接受就緒 accept
讀就緒?read
寫就緒?write
查看全部 -
selector核心API
查看全部 -
flip ()方法將buffer從寫模式切換為讀模式,此時(shí)position變?yōu)?,limit?變?yōu)閯偛诺膒osition
get()方法是讀取一個(gè)字節(jié),此時(shí)position移動(dòng)到1的位置
mark()方法記錄當(dāng)前position的位置
reset()方法是將position置為mar()標(biāo)記的位置
clear()方法將positon,limit,capacity重置
查看全部 -
寫入時(shí),用到limit,capacity,position,mark。 讀取時(shí),用到limit,capacity,position。查看全部
-
客戶端實(shí)現(xiàn)步驟
查看全部 -
NIO服務(wù)端1234
查看全部 -
SelectionKey提供四個(gè)常量值
連接就緒?connect
接受就緒 accept
讀就緒?read
寫就緒?write
查看全部 -
selector核心API
查看全部 -
Selector?叫做選擇器或者多路復(fù)用器,Selector能夠檢測(cè)1到多個(gè)NIO通道,并能夠知曉通道是否為諸如讀寫事件做好準(zhǔn)備的組件,通過Selector,一個(gè)單獨(dú)的線程就可以管理多個(gè)Channel,從而管理多個(gè)網(wǎng)絡(luò)連接
查看全部 -
flip ()方法將buffer從寫模式切換為讀模式,此時(shí)position變?yōu)?,limit?變?yōu)閯偛诺膒osition
get()方法是讀取一個(gè)字節(jié),此時(shí)position移動(dòng)到1的位置
mark()方法記錄當(dāng)前position的位置
reset()方法是將position置為mar()標(biāo)記的位置
clear()方法將positon,limit,capacity重置
查看全部 -
ByteBuffer.allocate(10),初始化Buffer
查看全部 -
Channel特點(diǎn):
即可讀又可寫
非阻塞
只能操作buffer
Channel實(shí)現(xiàn):
文件類:FileChannel
UDP類:DatagramChannel
TCP類:ServerSocketChannel/SocketChannel
Socket?通過ServerSocket和Socket
查看全部 -
NIO網(wǎng)絡(luò)模型
服務(wù)端Selector:負(fù)責(zé)監(jiān)聽新連接的接入,或者某個(gè)連接有可讀可寫的消息,一旦監(jiān)聽到,就會(huì)調(diào)用對(duì)應(yīng)的事件處理器來?完成對(duì)事件的響應(yīng)
Acceptor可以一次處理多個(gè)請(qǐng)求。
查看全部
舉報(bào)