`

IoBuffer in MINA

    博客分类:
  • mina
 
阅读更多

IoBuffer是MINA框架自己的用于替代ByteBuffer的一个类,MINA不直接使用ByteBuffer的原因有两个:

1.ByteBuffer没有一些有用的getter和putter方法比如get/putString

2.ByteBuffer的长度是固定的所以很难存储变长的数据

 

IoBuffer提供一个新的wrap方法可以直接包裹ByteBuffer或则byte[]来得到IoBuffer对象

 

AutoExpand:setAutoExpand(true)之后,容量不够时IoBuffer对象会自动扩展它的limit和capacity值

 

AutoShrink:如果autoShrink为true,当调用compact方法且小于或等于四分之一的capacity空间被使用则,capacity减半,或则可以直接调用shrink()方法。但是如果新的capacity将会小于minimumCapacity那就不生效

 

不管是expand还是shrink都是通过生成一个新的底层ByteBuffer实现的

 

Derived Buffer:衍生Buffer可以通过duplicate()、slice()、asReadOnlyBuffer()等方法得到,一般都用于在多个IoSession共享相同消息。有一点要注意,这些衍生buffer都是不能expand或shrink的

 

分享到:
评论

相关推荐

    Java学习之IO总结及mina和netty

    - Mina(Java In Action):一个基于NIO的轻量级网络通信框架,主要用于开发高性能、高可用性的网络应用。 - 特点:事件驱动、异步模型,简化了网络编程。 - 应用场景:如FTP服务器、聊天软件、游戏服务器等。 4...

    springboot整合mina

    public Object decode(IoBuffer in) throws Exception { int length = in.getInt(); if (in.getRemaining() ) { // 没有足够的数据,等待更多数据到达 return null; } byte[] data = new byte[length]; in....

    mina自定义编码解码器

    例如,如果你有一个自定义的消息类`MyMessage`,你可以创建一个`MyMessageEncoder`,重写`encode()`方法,将`MyMessage`对象转换为`IoBuffer`。编码器的目的是确保数据在网络中传输时保持正确格式。 ```java public...

    mina 服务器socket客服端发消息

    Mina提供了一个高级抽象层,允许开发者用类似处理Java IO的方式处理NIO(非阻塞I/O)。它简化了网络编程,使得开发者可以专注于业务逻辑,而无需关心底层的网络细节。Mina支持多种协议,如HTTP、FTP、Telnet等,同时...

    Mina_in_real_life_ASEU-2009.pdf

    session.write(((IoBuffer) message).duplicate()); // 将接收到的数据写回客户端 } } ``` ##### 2. 添加日志过滤器 为了记录客户端请求和响应,可以在代码中添加日志过滤器。 ```java public static void main...

    HPsocket 封包与mina对接

    protected boolean doDecode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception { // 在此处解析数据包 return false; } } ``` ### 总结 本篇主要介绍了如何使用HPsocket中的`...

    Mina2.0完全剖析,完全自学手册

    **`IoBuffer` 常用方法**:`IoBuffer`是Mina中用来处理二进制数据的重要类,提供了一系列方法来操作缓冲区中的数据,如`allocate`、`flip`、`rewind`等。 **示例**:下面的示例演示了如何根据文本换行符来进行编...

    java实现sshd协议帮助文档

    public void setInputStream(InputStream in) {} @Override public void setOutputStream(OutputStream out) { this.out = out; } @Override public void setErrorStream(OutputStream err) { this.err = ...

    如何根据Wowza服务器日志中的出错信息进行故障排查

    server ERROR 500 - Failed to connect: org.apache.mina.common.RuntimeIOException: Failed to get the session [ConnectException: Connection refused]. server WARN 200 - ...

    Netty5.0架构剖析和源码解读

    ### Netty5.0架构剖析和源码解读 #### 1. 概述 ##### 1.1. JAVA的IO演进 ###### 1.1.1....在JDK 1.4之前,Java网络编程主要依赖于传统的...private static void handleRead(ChannelHandlerContext ctx, ByteBuf in) { ...

Global site tag (gtag.js) - Google Analytics