首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

NIO直接从readable里边write

2013-09-12 
NIO直接从readable里面write如果从selector里面接到readable key以后,读完了以后直接写出去还不将它改成wr

NIO直接从readable里面write
如果从selector里面接到readable key以后,读完了以后直接写出去还不将它改成writable这样好吗?
比如:


public void read(SelectionKey key) throws IOException {
        SocketChannel clntChan = (SocketChannel) key.channel();
        ByteBuffer buffer = ByteBuffer.allocate(128);
        clntChan.read(buffer);
        
        buffer.flip();
        clntChan.write(buffer);
    }


这样直接把信息echo回去,而不通过把它改成writable,所以整个过程不判断有没有writable的key。如果要是发给指定channel的话可以直接从一个collection里面调出这个channel然后写出去,请问这样做法的利弊。 java nio
[解决办法]
很有可能会分两次write。read这边完整性判断即使你write这边不这样写(直接用Socket的blocking模式)也是需要做的,虽然99.9%的情况下没有问题,而且在Localhost对传的情况下这个比率还会更高,但是这不是一个严密的逻辑。

热点排行