ByteBuffer
1. allocate 服务端接收不到OP_READ事件问题
ByteBuffer byteBuffer = ByteBuffer.allocate(length);
...............................
sc.write(byteBuffer);
通过allocate创建的ByteBuffer,需要调用下filp()方法,不调用,Server端就监听不到本次write的OP_READ事件
ByteBuffer byteBuffer = ByteBuffer.wrap("welcome".getBytes());
通过wrap方法创建的ByteBuffer,没有这个问题
2. filp后没数据可读问题
public final Buffer flip() {
limit = position;
position = 0;
mark = -1;
return this;
}
public final boolean hasRemaining() {
return position < limit;
}
看filp源码,多次调用后,limit会被设置0
然后调用hasRemaining,就会返回false,没有数据可读