目前的几种协议制定方法:
There are three common techniques for splitting the stream of bytes into messages:
- use fixed length messages
固定长度的
- use a fixed length header that indicates the length of the body
固定协议头长度,内容长度可变
- using a delimiter; for example many text-based protocols append a newline (or CR LF pair) after every message
采用分隔符的方式
-------------------------------------------------------------------------------
在Mina中,有为协议解析的接口,分为编码和解码2个接口:
ProtocolEncoder:
ProtocolDecoder:
---------------------------------------------
在使用这2个接口的时候,还有一个接口需要关心:ProtocolCodecFactory
这个接口获取解码类和编码类;
还记得在timerserver中:
acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));
ProtocolCodecFilter就是通过ProtocolCodecFactory获取到编码和解码类,完成对应的工作;
分享到:
相关推荐
mina-filter-codec-netty-2.0.0-M6.jar mina-filter-compression-2.0.0-M6.jar mina-integration-beans-2.0.0-M6.jar mina-integration-jmx-2.0.0-M6.jar mina-integration-ognl-2.0.0-M6.jar mina-integration-...
Chapter 11 - Codec Filter Chapter 12 - Executor Filter Chapter 13 - SSL Filter Chapter 14 - Logging Filter Part III - MINA Advanced Chapter 15 - Debugging Chapter 16 - State Machine Chapter 17 - ...
3. `mina-filter-codec`: 包含了各种编码解码器,如Protobuf、JSON等,使得数据在传输前可以被高效地编码和解码。 4. `mina-filter-execchain`: 提供了执行链过滤器,用于构建复杂的处理逻辑。 5. `mina-filter-...
import org.apache.mina.filter.codec.textline.TextLineCodecFactory; import org.apache.mina.transport.socket.nio.NioSocketAcceptor; public class MinaServer { public static void main(String[] args) ...
import org.apache.mina.filter.codec.textline.TextLineCodecFactory; import org.apache.mina.transport.socket.nio.NioSocketAcceptor; public class EchoServer { private IoAcceptor acceptor = new ...
5. **mina-filter-codec.jar**:包含了各种编码器和解码器,如Protobuf、JSON等,用于在网络传输中进行数据的序列化和反序列化。 6. **mina-filter-execution-throttle.jar**:提供了执行限速过滤器,可以根据策略...
import org.apache.mina.filter.codec.ProtocolCodecFilter; import org.apache.mina.filter.logging.LoggingFilter; import org.apache.mina.filter.executor.OrderedThreadPoolExecutor; import org.apache.mina....
import org.apache.mina.filter.codec.ProtocolCodecFilter; import org.apache.mina.filter.logging.LoggingFilter; import org.apache.mina.transport.socket.nio.NioSocketAcceptor; public class MinaServer { ...
import org.apache.mina.filter.codec.textline.TextLineCodecFactory; import org.apache.mina.transport.socket.nio.NioSocketAcceptor; public class Demo1Server { private static Logger logger = Logger....
4. **Protocol Codec**:编码和解码是网络通信中的重要环节,Mina提供了ProtocolCodec接口,允许开发者自定义协议的编码和解码规则。 5. **服务端与客户端构建**:学习如何使用Mina API创建服务端和客户端,监听...
import org.apache.mina.filter.codec.textline.TextLineCodecFactory; import org.apache.mina.transport.socket.nio.NioSocketAcceptor; public class Demo1Server { private static final org.slf4j.Logger ...
2. **Filter**:过滤器是Mina中的重要概念,它允许我们对网络通信的数据进行处理。开发者可以定义多个过滤器,每个过滤器可以执行特定的操作,如数据编码、解码或安全检查。过滤器链的概念使得我们可以按顺序处理...
import org.apache.mina.filter.codec.textline.TextLineCodecFactory; import org.apache.mina.filter.logging.LoggingFilter; import org.apache.mina.transport.socket.nio.NioSocketAcceptor; public class ...
acceptor.getFilterChain().addLast("codec", filter); acceptor.bind(new InetSocketAddress(1314), new ServerHandler()); ``` 其中`ServerHandler`是一个实现了`IoHandler`接口的类,用于处理客户端发来的请求。...
在MinaDemo的实现中,开发者可能自定义了适配Android环境的Session、Codec和Handler,确保在移动设备上也能高效稳定地运行。同时,由于Android的内存限制和多线程特性,还需要特别注意资源管理和线程安全问题。 ...
3. **Protocol Codec**:Apache Mina提供了多种编码器和解码器,如ByteToMessageDecoder和MessageToByteEncoder,用于处理不同协议的数据格式转换。 4. **NIO(Non-blocking I/O)**:Mina利用Java的NIO库,实现高效...
在Mina中,编码和解码是通过自定义的`Codec`实现的,它允许开发者将原始字节流转换为有意义的对象,反之亦然。 首先,我们需要理解Mina的核心概念。`Session`代表了网络连接,`Filter`是处理I/O事件的组件,而`...
`Filter`是MINA的另一个核心组件,它们是处理网络事件和数据的中间件,可以串联起来形成一个过滤器链,实现数据的预处理和后处理。通过自定义Filter,开发者可以轻松地插入自己的业务逻辑。 `Buffer`是MINA中的缓冲...
Filter是MINA中的核心概念,它类似于Servlet中的Filter,可以对数据进行过滤、转换等操作。Session代表了网络连接,保存了连接状态和传输数据。Handler是业务逻辑处理的接口,负责处理实际的网络事件。ProtocolCodec...
在源代码中,你可能会看到自定义的 Codec 类,它们负责将应用程序对象与网络字节流之间进行转换。 8. **事件处理** Mina 的事件驱动模型允许开发者对特定的网络事件(如连接建立、数据到达、连接关闭等)做出响应...