MINA_Me

MINA的一般用法是:
1.获取IoAcceptor;
2.设置过滤器;
3.设置回调的控制器(继承IoHandlerAdapter的类);
4.绑定端口;

                IoFilter 中与过滤器的生命周期相关的方法
一类是与过滤器的生命周期相关的
init();

onPreAdd(IoFilterChain parent, String name, IoFilter.NextFilter nextFilter) ;//当过滤器即将被添加到过滤器链中的时候,此方法被调用。 

onPostAdd(IoFilterChain parent, String name, IoFilter.NextFilter nextFilter);//当过滤器已经被添加到过滤器链中之后,此方法被调用。

onPreRemove(IoFilterChain parent, String name, IoFilter.NextFilter nextFilter) ;//当过滤器即将被从过滤器链中删除的时候,此方法被调用。 

onPostRemove(IoFilterChain parent, String name, IoFilter.NextFilter nextFilter) ;//当过滤器已经被从过滤器链中删除的时候,此方法被调用。  

destroy() ;// 当过滤器不再需要的时候,它将 被销毁,此方法被调用。

/* 另外一类是用来过滤 I/O 事件的。*/
IoFilter 中过滤 I/O 事件的方法  方法 
filterClose(IoFilter.NextFilter nextFilter, IoSession session) ;//过滤对 IoSession的 close方法的调用。

filterWrite(IoFilter.NextFilter nextFilter, IoSession session, WriteRequest writeRequest);//过滤对 IoSession的 write方法的调用。

exceptionCaught(IoFilter.NextFilter nextFilter,  IoSession session, Throwable cause) ;//过滤对 IoHandlerexceptionCaught方法的 调用。 

messageReceived(IoFilter.NextFilter nextFilter,  IoSession session, Object message) ;//过滤对 IoHandler的messageReceived方法的 调用。 

messageSent(IoFilter.NextFilter nextFilter,  IoSession session, WriteRequest writeRequest);//过滤对 IoHandler的  messageSent方法的调 用。  

sessionClosed(IoFilter.NextFilter nextFilter,  IoSession session) ;// 过滤对 IoHandler的  sessionClosed方法的调 用。  

sessionCreated(IoFilter.NextFilter nextFilter,  IoSession session) ;//过滤对 IoHandler的  sessionCreated方法的 调用。 

sessionIdle(IoFilter.NextFilter nextFilter,  IoSession session, IdleStatus status);//过滤对 IoHandler的  sessionIdle方法的调 用。  

sessionOpened(IoFilter.NextFilter nextFilter,  IoSession session)  ;// 过滤对 IoHandler的  sessionOpened方法的调 用。 
                IoFilterChain 接口的方法 
addFirst(String name, IoFilter filter) ;//将指定名称的过滤器添加到过滤器链的开头。  

addLast(String name, IoFilter filter);//将指定名称的过滤器添加到过滤器链的末尾。  

contains(String name);//判断过滤器链中是否包含指定名称的过滤 器。

get(String name);//从过滤器链中获取指定名称的过滤器。 

remove(String name);//从过滤器链中删除指定名称的过滤器。 

replace(String name, IoFilter newFilter);//用过滤器 newFilter替换掉过滤器链中名为 name的过滤器。

getSession() 获取与过滤器链一一对应的 I/O 会话。

                IoHandler 接口的方法  方法
sessionCreated(IoSession session);//当有新的连接建立的时候,该方法被调 用。  

sessionOpened(IoSession session);//当有新的连接打开的时候,该方法被调 用。该方法在 sessionCreated之后被调 用。  

sessionClosed(IoSession session);//当连接被关闭的时候,此方法被调用。 

sessionIdle(IoSession session, IdleStatus status);//当连接变成闲置状态的时候,此方法被调用。 

exceptionCaught(IoSession session, Throwable cause);//当 I/O 处理器的实现或是 Apache MINA 中有异常抛出的时候,此方法被调用。

messageReceived(IoSession session, Object message);//当接收到新的消息的时候,此方法被调用。 

messageSent(IoSession session, Object message);//当消息被成功发送出去的时候,此方法被调用。 

Demo

public class MinaTimeClient {
    public static void main(String[] args) {
        IoConnector connector = new NioSocketConnector();
        connector.getFilterChain().addLast("logger", new LoggingFilter());
        connector.getFilterChain().addLast(
                "codec",
                new ProtocolCodecFilter(new PrefixedStringCodecFactory(Charset
                        .forName("UTF-8"))));
        connector.setHandler(new TimeClientHander());
        ConnectFuture connectFuture = connector.connect(new InetSocketAddress(
                "127.0.0.1", BaseConfig.PORT));
        // 等待建立连接
        connectFuture.awaitUninterruptibly();
        System.out.println("连接成功");

        IoSession session = connectFuture.getSession();

        Scanner sc = new Scanner(System.in);

        boolean quit = false;

        while (!quit) {

            String str = sc.next();
            if (str.equalsIgnoreCase("quit")) {
                quit = true;
            }
//          session.write(str);


            WriteFuture future = session.write(str); // 发送数据
            future.awaitUninterruptibly(); // 等待发送数据操作完成
            if (future.isWritten()) {
                // 数据已经被成功发送
                System.out.println("数据已经被成功发送");
            } else {
                // 数据发送失败
                System.out.println("数据发送失败");
            }


        }

        // 关闭
        if (session != null) {
            if (session.isConnected()) {
                session.getCloseFuture().awaitUninterruptibly();
            }
            connector.dispose(true);
        }

    }
}

参考:http://blog.csdn.net/hujunil/article/details/9923381
参考:http://wenku.baidu.com/link?url=m46kmmkYQqGaLAQFKEKbrGucC-cF-i6ZqczM0NWAxCsb6IPBLd3QXQGMlmxvDqqtXh7MG8xjvdoBgbI5B4HI9R80RmYzw0jDOjUBA6RfZF7

参考:http://www.reader8.cn/jiaocheng/20121030/1841846.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值