zoukankan      html  css  js  c++  java
  • mina的简单例子

    Apache的Mina(Multipurpose Infrastructure Networked Applications)是一个网络应用框架,可以帮助用户开发高性能和高扩展性的网络应用程序;它提供了一个抽象的、事件驱动的异步API,使Java NIO在各种传输协议(如TCP/IP,UDP/IP协议等)下快速高效开发。

    简单例子:

    客户端:

     // 创建客户端连接器.
            NioSocketConnector connector = new NioSocketConnector();
    
            connector.getFilterChain().addLast("logger", new LoggingFilter());
            // 设置编码过滤器
            connector.getFilterChain().addLast(
                    "codec",
                    new ProtocolCodecFilter(new TextLineCodecFactory(Charset
                            .forName("UTF-8"))));
            connector.setConnectTimeout(30);
            // 设置事件处理器
            connector.setHandler(new ClientHandler());
            // 建立连接
            ConnectFuture cf = connector.connect(new InetSocketAddress("127.0.0.1",
                    9100));
            // 等待连接创建完成
            cf.awaitUninterruptibly();
            // 发送消息
            cf.getSession().write("hello");
          
            // 等待连接断开
            cf.getSession().getCloseFuture().awaitUninterruptibly();
    
            connector.dispose();

    服务器:

    IoAcceptor acceptor = new NioSocketAcceptor();
    
     acceptor.getFilterChain().addLast("logger", new LoggingFilter());
    // 指定编码过滤器
    acceptor.getFilterChain().addLast(
    "codec",
    new ProtocolCodecFilter(new TextLineCodecFactory(Charset
    .forName("UTF-8"))));
    // 指定业务逻辑处理器
    acceptor.setHandler(new ServerHandler());
    // 设置端口号
    acceptor.setDefaultLocalAddress(new InetSocketAddress(9100));
    // 启动监听
    acceptor.bind();
    
    server 处理器
    class ServerHandler extends IoHandlerAdapter
    {
    
        @Override
        public void sessionCreated(IoSession session)
        {
            // 显示客户端的ip和端口
            System.out
                    .println(session.getRemoteAddress().toString() + "   service");
        }
    
        @Override
        public void messageReceived(IoSession session, Object message)
                throws Exception
        {
            String str = message.toString();
    
            if (str.trim().equalsIgnoreCase("hello"))
            {
                // System.out.println(str + "  client sent : hello");
                // 结束会话
                session.close();
                return;
            }
    
            Date date = new Date();
            // 返回当前时间的字符串
            session.write(date.toString());
        }
    
    
    }


  • 相关阅读:
    链表问题
    有关动态规划的LeetCode
    正则表达式匹配与自动机
    基于数据库范式的一点点想法
    html5 API
    Web鼠标事件
    webpack模块化原理
    Jquery数据缓存
    图片懒加载
    MySql存储过程的调试
  • 原文地址:https://www.cnblogs.com/blogyuan/p/3082357.html
Copyright © 2011-2022 走看看