我正在尝试使用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();
}
}
}
答案 0 :(得分:1)
只需将一个频道设为另一个频道的选择键的键附件,或者更好地制作一个包含它们的对象并将其设置为附件。