NIO流行框架 Mina IOFilter接口
来源:互联网 发布:cms监控客户端下载 编辑:程序博客网 时间:2024/06/18 01:36
1.IOFilter:
对应用程序和网络这块的传输,就是二进制数据和对象之间的相互转化,有相应的解码和编码器。这也是我们过滤器一种,我们队过滤器还可以做日志。消息确认等功能。
2.IOFilter类图:
是在应用层和我们业务层之家过滤层
3.完成自定义过滤器:
就是在往handler处理之前 需要调用相应的过滤器进行过滤.
Client:业务handler之前会调用我们的过滤器
对应用程序和网络这块的传输,就是二进制数据和对象之间的相互转化,有相应的解码和编码器。这也是我们过滤器一种,我们队过滤器还可以做日志。消息确认等功能。
2.IOFilter类图:
是在应用层和我们业务层之家过滤层
3.完成自定义过滤器:
就是在往handler处理之前 需要调用相应的过滤器进行过滤.
Client:业务handler之前会调用我们的过滤器
Server:同样在我们直接到数据的时候,和发送数据的时候也调用了我们的过滤器,然后才交给我们的handler。
我们来实现一个自定义的过滤器
package com.ccop;import org.apache.mina.core.filterchain.IoFilterAdapter;import org.apache.mina.core.session.IoSession;import org.apache.mina.core.write.WriteRequest;/** * 自定义过滤器 * @author lm * */public class MyServerfilter extends IoFilterAdapter{@Overridepublic void messageReceived(NextFilter nextFilter, IoSession session, Object message) throws Exception {// TODO Auto-generated method stubsuper.messageReceived(nextFilter, session, message);System.out.println("MyfilterServer->messageReceived");nextFilter.messageReceived(session, message);}@Overridepublic void messageSent(NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws Exception {// TODO Auto-generated method stubsuper.messageSent(nextFilter, session, writeRequest);System.out.println("MyfilterServer->messageSent");nextFilter.messageReceived(session, writeRequest);}}
package com.ccop;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.charset.Charset;import org.apache.mina.core.service.IoAcceptor;import org.apache.mina.core.session.IdleStatus;import org.apache.mina.filter.codec.ProtocolCodecFilter;import org.apache.mina.filter.codec.textline.LineDelimiter;import org.apache.mina.filter.codec.textline.TextLineCodecFactory;import org.apache.mina.transport.socket.nio.NioSocketAcceptor;public class Server {private static int port=7080;static IoAcceptor accpet = null;public static void main(String[] args) throws IOException{accpet = new NioSocketAcceptor();//设置编码过滤器accpet.getFilterChain().addLast("codec",new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"), //编码集LineDelimiter.WINDOWS.getValue(), //编码器LineDelimiter.WINDOWS.getValue())));accpet.getSessionConfig().setReadBufferSize(1024);//缓存区accpet.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);//10毫秒进入空闲状态accpet.getFilterChain().addFirst("filter", new MyServerfilter());accpet.setHandler(new ServerHandler()); //具体业务层accpet.bind(new InetSocketAddress(port));System.out.println("Server-->"+port);}}
package com.ccop;import org.apache.mina.core.filterchain.IoFilterAdapter;import org.apache.mina.core.session.IoSession;import org.apache.mina.core.write.WriteRequest;public class MyClientFilter extends IoFilterAdapter{@Overridepublic void messageReceived(NextFilter nextFilter, IoSession session, Object message) throws Exception {// TODO Auto-generated method stubsuper.messageReceived(nextFilter, session, message);System.out.println("MyClientFilter->messageReceived");nextFilter.messageReceived(session, message);}@Overridepublic void messageSent(NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws Exception {// TODO Auto-generated method stubsuper.messageSent(nextFilter, session, writeRequest);System.out.println("MyClientFilter->messageSent");nextFilter.messageReceived(session, writeRequest);}}
package com.ccop;import java.net.InetSocketAddress;import java.nio.charset.Charset;import org.apache.mina.core.future.ConnectFuture;import org.apache.mina.core.service.IoConnector;import org.apache.mina.core.session.IoSession;import org.apache.mina.filter.codec.ProtocolCodecFilter;import org.apache.mina.filter.codec.textline.LineDelimiter;import org.apache.mina.filter.codec.textline.TextLineCodecFactory;import org.apache.mina.transport.socket.nio.NioSocketConnector;public class client {private static String host = "127.0.0.1";private static int port=7080;public static void main(String[] args){IoSession ioSession=null;IoConnector connector = new NioSocketConnector();connector.setConnectTimeout(3000);connector.getFilterChain().addLast("coderc", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"),LineDelimiter.WINDOWS.getValue(),LineDelimiter.WINDOWS.getValue())));connector.getFilterChain().addFirst("filter", new MyClientFilter());connector.setHandler(new clientHandler());ConnectFuture futrue= connector.connect(new InetSocketAddress(host,port));futrue.awaitUninterruptibly(); //等待我的连接ioSession=futrue.getSession();ioSession.write("你好 !");ioSession.getCloseFuture().awaitUninterruptibly();//等待关闭连接connector.dispose();}}
0 0
- NIO流行框架 Mina IOFilter接口
- NIO流行框架 Mina IOSession接口
- NIO流行框架 Mina IOBuffer接口
- NIO流行框架 Mina helloword
- NIO流行框架 Mina 体系结构介绍
- NIO流行框架 Mina 自定义编解码器
- IoFilter接口
- Nio Mina框架
- Mina学习之IoFilter
- Mina IoFilter注意事项说明
- NIO流行框架 Netty
- Java NIO框架之 Mina
- openfire 的NIO框架Mina
- NIO框架之MINA详解
- NIO通讯框架之Mina
- 流行 NIO Framework netty 和 mina 性能测评与分析
- mina结构分析(NIO网络接口)
- Java NIO框架MINA中文教程
- tomcat警告setting property 'debug' to '0' did not find a matching property
- img的alt和title区别
- 冯仑:理想丰满
- html常用标签
- 网页的布局方式
- NIO流行框架 Mina IOFilter接口
- CentOS查看系统版本、CPU、硬盘、内存、网络、时间
- Add to numbers
- 简单的sql注入WP
- 顺序表
- 选择性搜索(一) 基础部分:Efficient Graph-Based Image Segmentation
- nio系列1
- Java 自动装箱和拆箱
- Struts2中访问web元素的四种方式