SelectionKey
- 表示 Selector 和網(wǎng)絡通道的注冊關(guān)系,共四種(全是常量):
- Int?OP_ACCEPT:有新的網(wǎng)絡連接可以接受,值為 16?(1 << 4)
- Int?OP_CONNECT: 代表連接已經(jīng)建立,值為 8?(1 << 3)
- Int?OP_READ:代表讀操作,值為 1?(1 << 0)
-
Int?OP_WRITE: 代表寫操作,值為 4??(1 << 2)
- 相關(guān)方法:
public abstract Selector selector();//得到與之關(guān)聯(lián)的Selector對象
public abstract SelectableChannel channel();//得到與之關(guān)聯(lián)的通道
public final Object attachment();//得到與之關(guān)聯(lián)的共享數(shù)據(jù)
public abstract SelectionKey interestOps(int ops);//設置或改變監(jiān)聽事件
public final boolean isAcceptable();//是否可以 accept
public final boolean isReadable();//是否可以讀
public final boolean isWritable();//是否可以寫
?
ServerSocketChannel
- ServerSocketChannel 在服務器端監(jiān)聽新的客戶端 Socket 連接
- 相關(guān)方法:
- public static ServerSocketChannel open(),得到一個ServerSocketChannel通道
- publle final ServerSocketChannel bind(SocketAddress local),設置服務器端端口 號
- publle final SelectableChannel configureBlocking(boolean block), 設置阻塞或非 阻塞模式,取值false表示采用非阻塞模式
- publlc SocketChannel accept(),接受一個連接,返回代表這個連接的通道對象
- public final SelectionKey register(Selectorsel,int ops), 注冊一個選擇器并設置 監(jiān)聽事件
?
SocketChannel?
- SocketChannel,網(wǎng)絡IO通道,具體負責進行讀寫操作。NIO 把緩沖區(qū)的數(shù)據(jù)寫入通道,或者把通道里的數(shù)據(jù)讀到緩沖區(qū)。
- 相關(guān)方法:
- public static SocketChannel open():/得到一個SocketChannel通道
- public final SelectableChannel configureBlocking(boolean block);//設置阻塞或非阻塞模式,取值false表示采用非阻塞模式
- public boolean connect(SocketAddress remote);//連接服務器
- public boolean finishConnect();//如果上面的方法連接失敗,接下來就要通過該方法完成連接操作
- public int write(ByteBuffer src);//往通道里寫數(shù)據(jù)
- public int read(ByteBuffer dst);//從通道里讀數(shù)據(jù)
- public final SelectionKey register(Selectorsel,int ops,Object att);//注冊一個選擇器并設置監(jiān)聽事件,最后一個參數(shù)可以設置共享數(shù)據(jù)
- public final void close();//關(guān)閉通道
NIO實現(xiàn)聊天室功能(選修)
- 要求:
- 編寫一個 NIO 群聊系統(tǒng),實現(xiàn)服務器端和客戶端之間的數(shù)據(jù)簡單通訊(非阻塞)
- 實現(xiàn)多人群聊
- 服務器端:可以監(jiān)測用戶上線,離線,并實現(xiàn)消息轉(zhuǎn)發(fā)功能
- 客戶端:通過 channel 可以無阻塞發(fā)送消息給其它所有用戶,同時可以接受其它用戶發(fā)送的消息(有服務器轉(zhuǎn)發(fā)得)
-
GroupChatServer
?
3. GroupChatClient?
文章來源:http://www.zghlxwxcb.cn/news/detail-806832.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-806832.html
到了這里,關(guān)于Netty開篇——NIO章下(五)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!