说明
利用ByteBufUtil的indexOf(ByteBuf needle, ByteBuf haystack)函数可以在haystack中寻找needle出现的位置。如果没有找到,返回-1。
示例
在一个ByteBuf 中找到了另外一个ByteBuf
package com.thb;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufUtil;
import io.netty.buffer.Unpooled;
public class Test {
public static void main(String[] args) {
// 创建一个ByteBuf
ByteBuf buf = Unpooled.buffer();
buf.writeByte(22);
buf.writeByte(22);
buf.writeByte(22);
buf.writeByte(104);
buf.writeByte(22);
// 创建一个包裹数组的ByteBuf
ByteBuf buf2 = Unpooled.wrappedBuffer(new byte[] {104, 22});
// 在buf中查找buf2
int index = ByteBufUtil.indexOf(buf2, buf);
System.out.println(index);
}
}
运行输出:
在一个ByteBuf 中没有找到另外一个ByteBuf
package com.thb;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufUtil;
import io.netty.buffer.Unpooled;
public class Test {
public static void main(String[] args) {
// 创建一个ByteBuf
ByteBuf buf = Unpooled.buffer();
buf.writeByte(22);
buf.writeByte(22);
buf.writeByte(22);
buf.writeByte(104);
buf.writeByte(22);
// 创建一个包裹数组的ByteBuf
ByteBuf buf2 = Unpooled.wrappedBuffer(new byte[] {104, 22, 22});
// 在buf中查找buf2
int index = ByteBufUtil.indexOf(buf2, buf);
System.out.println(index);
}
}
运行输出: