我正試圖實施NIO服務器並且有一個關於SelectionKey
的問題。假設我們提取了一些準備好讀取的密鑰。就像這樣:從選擇器中刪除密鑰
SelectionKey key;
//...
SocketChannel c = (SocketChannel) key.channel;
//read from c
但是我們從通道讀取的是不足以使一個完整的Packet
。所以我附加了一些對象到key
。
問:什麼時候應該從Selector
中刪除key
?當我讀完整Packet
?或者每當我重新註冊頻道時,請刪除Selector
中的密鑰,並將接收到的數據重新附加到新註冊的SelectionKey
?