【发布时间】:2015-02-02 10:08:15
【问题描述】:
我对java nio的刻板方法有混乱
1:注册/更改 OP_Write
2:如果 Write 返回 0,我该怎么办?
3:写完后我应该注册还是更改操作?
频道设置为非阻塞
....onAccept register OP_READ
public void onWrite()
{
ByteBuffer bb = ByteBuffer.wrap(msg.encode());
while(bb.remaining()!= 0){
int ret = socketChannel.write(bb);
if(ret == 0){
//Should I register or should I change op?
//socketChannel.register(selector, SelectionKey.OP_WRITE, null);
//selectionKey.interestOps(SelectionKey.OP_WRITE);
}
}
//Is it necessary to change op or re-register Read or 0
//socketChannel.register(selector, SelectionKey.OP_READ, null);
//selectionKey.interestOps(SelectionKey.OP_READ);
//selectionKey.interestOps(0);
}
我正在努力实现尽可能低的延迟。而且通道不会回显,只会读取或写入。
【问题讨论】: