zoukankan      html  css  js  c++  java
  • 一个基于MINA框架应用的最简单例子

    直接上代码。关于原理和主要的API以后在说。先能跑通了在说。

    主要的包:mina-core-2.0.0.jar【到官网上下载完整项目包里面还有文档和依赖包】,jcl-over-slf4j-1.5.11.jar,slf4j-api-1.5.11.jar,slf4j-nop-1.5.11.jar这三个是mina使用的日志包。前面二个mina项目包里有。最后一个到官网上下吧。

    服务器类:

    public class MinaServer {  
        private static final int PORT = 22222;// 定义监听端口  
        public static void main(String[] args) throws IOException {  
            //创建一个非阻塞的Server端socket,用NIO  
            IoAcceptor acceptor = new NioSocketAcceptor();  
            //创建接受数据的过滤器  
            DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();  
            //设定这个过滤器将一行一行的读取数据  
            chain.addLast("codec",new ProtocolCodecFilter(new TextLineCodecFactory()));// 指定编码过滤器  
            // 指定业务逻辑处理器  
            acceptor.setHandler(new Handler());  
            // 设置端口号  
            acceptor.setDefaultLocalAddress(new InetSocketAddress(PORT));  
            acceptor.bind(); //启动监听  
            System.out.println("Mina Server is Listen on:"+PORT);  
        }  
    }  

     处理类。用来处理请求连接的。

    public class Handler extends IoHandlerAdapter {  
        //当一个客户端连接进入时  
        @Override  
        public void sessionOpened(IoSession session)throws Exception {  
            System.out.println("incoming client:"+session.getRemoteAddress());  
        }  
        //当客户端发送消息到达时  
        @Override  
        public void messageReceived(IoSession session, Object message)throws Exception {  
            String s = message.toString();  
            System.out.println("client send message is:"+s);  
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd mm:hh:ss");  
            Date date = new Date();  
            session.write(sdf.format(date));// 返回当前时间的字符串  
            System.out.println("message written...");  
        }  
        //当一个客户端连接关闭时  
        @Override  
        public void sessionClosed(IoSession session)throws Exception {  
            System.out.println("one client closed");  
        }  
    }  

     服务端就完事儿了。运行MainServer就行了。

    然后是测试下。在命令行运行“telnet 127.0.0.1 22222”,当服务器端出现“incoming client:/127.0.0.1:2333”,表示你连接成功了

    然后你随便写个字符,然后回车。如果可以看到由服务器返回来的时间串就OK了。

    1. public class Handler extends IoHandlerAdapter {  
    2.     //当一个客户端连接进入时  
    3.     @Override  
    4.     public void sessionOpened(IoSession session)throws Exception {  
    5.         System.out.println("incoming client:"+session.getRemoteAddress());  
    6.     }  
    7.     //当客户端发送消息到达时  
    8.     @Override  
    9.     public void messageReceived(IoSession session, Object message)throws Exception {  
    10.         String s = message.toString();  
    11.         System.out.println("client send message is:"+s);  
    12.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd mm:hh:ss");  
    13.         Date date = new Date();  
    14.         session.write(sdf.format(date));// 返回当前时间的字符串  
    15.         System.out.println("message written...");  
    16.     }  
    17.     //当一个客户端连接关闭时  
    18.     @Override  
    19.     public void sessionClosed(IoSession session)throws Exception {  
    20.         System.out.println("one client closed");  
    21.     }  
    22. }  
  • 相关阅读:
    统计nginx日志里访问次数最多的前十个IP
    while 格式化输出 运算符 字符编码
    Python 软件安装
    Python 基础
    Typora 基础的使用方法
    Django ORM (四) annotate,F,Q 查询
    Django 惰性机制
    Django ORM (三) 查询,删除,更新操作
    Django ORM (二) 增加操作
    Django ORM (一) 创建数据库和模型常用的字段类型参数及Field 重要参数介绍
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/5314283.html
Copyright © 2011-2022 走看看