首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

mina通信框架详述(IoBuffer)

2012-08-01 
mina通讯框架详述(IoBuffer)IoBuffer1.获取IoBuffer对象:(IoBuffer是一个抽象类,因此不能直接实例化)??//

mina通讯框架详述(IoBuffer)

IoBuffer

1.获取IoBuffer对象:(IoBuffer是一个抽象类,因此不能直接实例化)

?

?

// 使用指定大小实例化一个新的Buffer, 并且可以定义他的类型 (direct 或 heap)   public static IoBuffer allocate(int capacity, boolean direct)   // 使用指定大小实例化一个新的Buffer   public static IoBuffer allocate(int capacity)  
?

?

第二种方式:(使用第二种方法之前你必须先指定Buffer类型,否则默认将是Heap)

?

?

// 设置创建默认Buffer的类型,这里是heap.   IoBuffer.setUseDirectBuffer(false);   // 新建一个Buffer   IoBuffer buf = IoBuffer.allocate(1024); 

?

?

?

2.IoBuffer的自动扩展:(使用Java NIO的API创建一个可扩展的buffer并不容易,因为要为网络程序填充超过固定大小数据)

?

?

IoBuffer buffer = IoBuffer.allocate(8);  buffer.setAutoExpand(true);    buffer.putString("12345678", encoder);           // 往Buffer里加入更多内容  buffer.put((byte)10);  

?与java的StringBuffer类似,当setAutoExpand设置为true的时候,内容的长度超过最大长度的时候,会自动翻倍扩展。

?

?

3.IoBuffer的长度改变:

?

?

IoBuffer buffer = IoBuffer.allocate(16);  buffer.setAutoShrink(true);  buffer.put((byte)1);  System.out.println("Initial Buffer capacity = "+buffer.capacity());  buffer.shrink();  System.out.println("Initial Buffer capacity after shrink = "+buffer.capacity());    buffer.capacity(32);  System.out.println("Buffer capacity after incrementing capacity to 32 = "+buffer.capacity());  buffer.shrink();  System.out.println("Buffer capacity after shrink= "+buffer.capacity());  

?

(1)capacity():无参可以获取到当前buffer的内容长度。

(2)capacity(32):可以设置buffer的长度。

(3)shrink():可以释放没有被占用的长度。

?

?

?

4.IoBuffer的内存管理分配:

IoBufferAllocater专门Buffer的分配和管理。实现IoBufferAllocater接口后可控制Buffer的分配管理。Mina的以下类实现了IoBufferAllocater接口:

SimpleBufferAllocator(默认)- 任何时间创建一个新的Buffer

CachedBufferAllocator - 当buffer需要复用时缓存buffer

?

?

5.其它有用方法:

static IoBuffer wrap(ByteBuffer nioBuffer):传入 是NIObuffer返回的是IoBuffer。

?

还有很多方法都在子类里面进行实现的,只能在用的过程中归纳那些比较重要了

?

?

热点排行