2013-08-31 72 views
0

我书面方式在Java NIO BASIC PROGRAME,为什么我selector.select()得到挂起

ServerSocketChannel serverChannel = ServerSocketChannel.open(); 
ServerSocket serverSocket = serverChannel.socket(); 
Selector selector = Selector.open(); 
serverSocket.bind (new InetSocketAddress (1234)); 
serverChannel.configureBlocking (false); 
serverChannel.register (selector, SelectionKey.OP_ACCEPT); 

当我执行以下操作

int n = selector.select(); 

它从来没有从这句话出来,我可以指定超时值,每次n的值为0时都这样做。

+0

这意味着没有任何插座被选中。 – EJP

回答

2

请阅读javadocs ...如果选择了某个OP,它将只有n> 0。如果套接字被接受,这将在您的示例中发生。只要做一个telnet localhost 1234,你就会看到它在行动。

+0

telnet 0 1234 尝试0.0.0.0 ... 连接到0. 转义字符是'^]'。 你好! – anish