這是一個非常基本的問題,但我不能爲它找到任何地方一個明確的答案:ServerSocketChannel.accept()返回的SocketChannel是否保證連接?
當我accept()從的ServerSocketChannel的連接,我是保證返回的SocketChannel是「connected」,或可能呢發生返回的頻道仍在執行某種形式的握手或其他任何操作,只會稍後將其設置爲SelectionKey.OP_CONNECT
位?
換句話說,我是保證,下面的代碼片段將從未打印false
?
ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
serverSocketChannel.socket().bind(new InetSocketAddress(1234));
SocketChannel socketChannel = serverSocketChannel.accept();
System.out.println(socketChannel.isConnected());
_如果此通道處於非阻塞模式,那麼如果沒有掛起的連接,此方法將立即返回null。否則,**將無限期阻止,直到出現新的連接**或發生I/O錯誤。似乎表明它將被連接。 –
@SotiriosDelimanolis「似乎」正是這個問題! ;)連接在完全「連接」之前可能已被視爲「可用」。也許......我不知道......我希望他們對此更加清楚...... –