1.Scatter
Scatter(分散)操作是指可以将从channel中读取的内容分散的写到不同的buffer中。注意必须要先将前面的buffer写满之后才能写后面的buffer。因此,Scatter操作不支持动态消息(即不确定大小的消息)
实例代码如下:
ByteBuffer header = ByteBuffer.allocate(128);
ByteBuffer body = ByteBuffer.allocate(1024);
ByteBuffer[] bufferArray = { header, body };
//写满header再写body,body不一定要写满
channel.read(bufferArray);
2.Gather()方法
Gather(聚合)操作是指可以将多个buffer的内容聚合写到一个channel中。在读取这些buffer时,只读取position和limit之间的数据,因此Gather操作支持动态消息。
实例代码如下:
ByteBuffer header = ByteBuffer.allocate(128);
ByteBuffer body = ByteBuffer.allocate(1024);
//write data into buffers
ByteBuffer[] bufferArray = { header, body };
//只会写header和body两buffer中position和limit之间的数据
channel.write(bufferArray);