“Java”目录存档

SelectionKey.OP_CONNECT与channel.isConnected()

2010年08月27日,星期五

这是java的一个bug。表现为OP_CONNECT操作发生的时候channel.isConnected()为false。

官方做出的解决方案是OP_CONNECT发生的时候调用socketChannel.finishConnect()操作。

这个问题折腾了我整一天,他娘的居然还有这种说法。

java nio ServerSocketChannel诡异问题。

2009年12月27日,星期天

昨天遇到个离奇问题,服务器连接不管怎么调,总是只能接受一条连接。

解决方法代码。

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() ;