这是java的一个bug。表现为OP_CONNECT操作发生的时候channel.isConnected()为false。
官方做出的解决方案是OP_CONNECT发生的时候调用socketChannel.finishConnect()操作。
这个问题折腾了我整一天,他娘的居然还有这种说法。
这是java的一个bug。表现为OP_CONNECT操作发生的时候channel.isConnected()为false。
官方做出的解决方案是OP_CONNECT发生的时候调用socketChannel.finishConnect()操作。
这个问题折腾了我整一天,他娘的居然还有这种说法。
昨天遇到个离奇问题,服务器连接不管怎么调,总是只能接受一条连接。
解决方法代码。
int acceptNum = serverSelector.selectNow() ;
if(acceptNum != 0)
{
Set<SelectionKey> keys = serverSelector.selectedKeys() ;
Iterator<SelectionKey> iter = keys.iterator();
while (iter.hasNext())
{
SelectionKey key = iter.next();
acceptOption( key ) ;
iter.remove() ;
}
}
关键的是这行代码iter.remove() ;