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());
        }
    
    
    }


  • 相关阅读:
    verilog学习(9)实战之存储器&奇偶校验
    求职经验之综合岗位三面
    求职经验之综合岗位二面
    求职经验之综合岗位
    verilog学习(8)实战之PPL与串行/解串器
    verilog学习(7)实战之扫描链
    verilog学习(6)实战4之触发器与锁存器
    verilog学习(5)实战3之计数器与bus
    verilog学习(4)实战1之基础练习
    求职经验之器件与芯片岗
  • 原文地址:https://www.cnblogs.com/blogyuan/p/3082357.html
Copyright © 2011-2022 走看看