这是一个非常基本的问题,但我不能为它找到任何地方一个明确的答案: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“似乎”正是这个问题! ;)连接在完全“连接”之前可能已被视为“可用”。也许......我不知道......我希望他们对此更加清楚...... –