![](/img/trans.png)
[英]In Java NIO, is a selector useful for a client SocketChannel?
[英]Java nio Reading SocketChannel on a Selector
我有一個小服務器應用程序,它接收來自多個客戶端的連接 客戶端將連接,發送消息並斷開連接,沒有回復響應。
我正在使用ServerSocketChannel來監聽連接。 我收到使用選擇器的新連接的通知,當發生這種情況時,我將SocketChannel注冊到SelectionKey.OP_READ
的選擇器
我不確定的部分是當我收到通知數據可供閱讀時。 我的SocketChannel處於非阻塞模式。 我在SocketChannel上調用channel.read(buffer)
來讀取字節緩沖區從javadoc中讀取,我應該重復調用它,直到我得到-1表示流的結束。 但是,我不確定在再次調用read之前是否應該等待選擇器再次通知我。 那是:
非常感謝
從javadoc中讀取,我應該重復調用它,直到我得到-1表示流的結束。
它沒有說任何這樣的事情。
如果您處於非阻塞模式,則可以讀取直到它返回-1 或零 。 如果它返回零,則套接字接收緩沖區中沒有更多數據待處理,因此您應該返回到選擇循環。 如果它返回-1,那就是它,完成,完成,完成,關閉套接字通道並相應地繼續。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.