📄 selecttest.java
字号:
package com.ronsoft.books.nio.channels;import java.nio.ByteBuffer;import java.nio.channels.ServerSocketChannel;import java.nio.channels.SocketChannel;import java.nio.channels.Selector;import java.nio.channels.SelectionKey;import java.nio.channels.SelectableChannel;import java.net.Socket;import java.net.ServerSocket;import java.net.InetSocketAddress;import java.util.Iterator;/** * Test select return value. * Start this server, then connect to port 1234. The incoming * connection will be registered with the selector but never read. * Type something on the conection, the selector will see the channel * ready but the channel is never serviced in the loop. Select will * return 1 forever after. * * @author Ron Hitchens (ron@ronsoft.com) * @version $Id: SelectTest.java,v 1.1 2002/05/20 07:24:29 ron Exp $ */public class SelectTest{ public static int PORT_NUMBER = 1234; public static void main (String [] argv) throws Exception { ServerSocketChannel ssc = ServerSocketChannel.open(); Selector selector = Selector.open(); ssc.socket().bind (new InetSocketAddress (PORT_NUMBER)); ssc.configureBlocking (false); ssc.register (selector, SelectionKey.OP_ACCEPT); while (true) { int n = selector.select (1000); System.out.println ("selector returns: " + n); Iterator it = selector.selectedKeys().iterator(); while (it.hasNext()) { SelectionKey key = (SelectionKey) it.next(); // Is a new connection coming in? if (key.isAcceptable()) { ServerSocketChannel server = (ServerSocketChannel) key.channel(); SocketChannel channel = server.accept(); // set the new channel non-blocking channel.configureBlocking (false); // register it with the selector channel.register (selector, SelectionKey.OP_READ); it.remove(); } // is there data to read on this channel? if (key.isReadable()) { System.out.println ("Channel is readable"); // don't actually do anything } // it.remove(); } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -