2013-08-31 71 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