在NIO中配对SocketChannels

时间:2014-05-20 09:02:17

标签: java networking nio

我正在尝试使用java NIO找到最优雅的方式来配对两个套接字通道。到目前为止,我正在写一个频道,从中读取并将结果写入另一个频道。 我正在采取的方式似乎是一个黑客,我想知道是否有人知道更好的方式?

    public void readyChannels() {
    while (true) {
    try {
    selector.select();// block here until a new IO event
    Iterator keys = selector.selectedKeys().iterator();
    while (keys.hasNext()) {
        SelectionKey key = (SelectionKey) keys.next();
        keys.remove();// do not process this again
        write(key.channel(),"random data".getBytes());
            byte[] bytes = read(key.channel());
                write(otherChannel, bytes);
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
}
}

1 个答案:

答案 0 :(得分:1)

只需将一个频道设为另一个频道的选择键的键附件,或者更好地制作一个包含它们的对象并将其设置为附件。