直接上代码。关于原理和主要的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 = ;// 定义监听端口
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. }

一个基于MINA框架应用的最简单例子的更多相关文章

  1. 一个基于 easyui, vue 和 maptalks 的简单地图应用

    一个基于 easyui, vue 和 maptalks 的简单地图应用 做了一个小应用,结合 easyui , vue 和 maptalks 的简单的地图应用.可以用来画图,什么的. 地址

  2. Spring框架系列(2) - Spring简单例子引入Spring要点

    上文中我们简单介绍了Spring和Spring Framework的组件,那么这些Spring Framework组件是如何配合工作的呢?本文主要承接上文,向你展示Spring Framework组件 ...

  3. 基于MINA框架快速开发网络应用程序

    1.MINA框架简介 MINA(Multipurpose Infrastructure for Network Applications)是用于开发高性能和高可用性的网络应用程序的基础框架.通过使用M ...

  4. 如何快速搭建一个基于ServiceStack框架的web服务

    ServiceStack是一个高性能的.NET Web Service 平台,能够简化开发高性能的REST (支持JSON,XML,JSV,HTML,MsgPack,ProtoBuf,CSV等消息格式 ...

  5. 基于spring框架的apache shiro简单集成

    关于项目的安全保护,我一直想找一个简单配置就能达到目的的方法,自从接触了shiro,这个目标总算达成了,以下结合我使用shiro的经验,谈谈比较轻便地集成该功能. 首先我们先了解一下shiro是什么. ...

  6. 基于Mina的Http Server以及简单的Http请求客户端

    目的:    Java平台下的内部组件之间的通信.    1.WebService 由于感觉本身Java平台下的Web Service标准就不够统一,相互之间的调用就会有一些问题,更不用说与.net等 ...

  7. JAVA WEB快速入门之从编写一个基于SpringMVC框架的网站了解Maven、SpringMVC、SpringJDBC

    接上篇<JAVA WEB快速入门之通过一个简单的Spring项目了解Spring的核心(AOP.IOC)>,了解了Spring的核心(AOP.IOC)后,我们再来学习与实践Maven.Sp ...

  8. 一个基于Behave框架的http接口测试实例

    前言:本人没怎么做过http接口测试,只是最近学习了一下,Behave框架也是最近学习的,如果有不对的请各位大神指点,感谢! 1.1       接口准备 本次get请求的接口用的是百度接口:wd=搜 ...

  9. 【项目笔记】完成一个基于SSM框架的增删改查的模块后总结的问题

    最近为了准备新工作重新摸出了SSM框架,同时从0学习了JQuery,终于用一周做完了一个包括增删改查的模块(主要是属性太多了,其中一个类50+,复制粘贴耗时). 从中特意记下了几个遇到的问题,总结一下 ...

随机推荐

  1. AJAX远程跨域获取数据

    //本地获取json文件 $.ajax({ url : 'json.php', type : 'post', dataType : 'json',//返回json数据格式 success : func ...

  2. centos无法载入 mcrypt 扩展,<br />请检查 PHP 配置,经过各种尝试,终于找到了解决办法

    百度了无数个方法都没有解决问题,也是折腾死我了,最终解决了问题 解决办法:安装php-mcrypt libmcrypt libmcrypt-devel这三个库文件 1.安装第三方yum源(默认yum源 ...

  3. ctype.h 字符分类与转换

      函数及说明 1 int isalnum(int c)该函数检查传递的字符是否是字母数字. 2 int isalpha(int c)该函数是否传递的字符是字母. 3 int iscntrl(int ...

  4. "创业"半年

                作为一个程序员, 因为受够了”给别人实现梦想太累”的念头, 又受到”外面给出更高薪水”的诱惑, 果断离职创业. 但原本是要创业的, 过了半年, 变成了失业, 这其中到底经历了哪 ...

  5. Mybatis基础入门 I

    作为ORM的重要框架,MyBatis是iBatis的升级版.Mybatis完全将SQL语句交给编程人员掌控,这点和Hibernate的设计理念不同(至于Hibernate的理念,待我先学习学习). 下 ...

  6. 排列与组合的C语言实现

    排列与组合是数学里的经典问题,由这个问题可引申出子集.字典排序等问题,那么,我们先看经典的排列与组合,怎么在程序里实现. 在网上搜了一下,关注这个问题的人还是挺多的,有不了人给出的回答是使用几个for ...

  7. poj3077---进位

    #include <stdio.h> #include <stdlib.h> #include<string.h> ]; ]; int main() { int n ...

  8. linux环境开发私房菜

    1,各种linux 平台GUI开发IDE环境 2,C/C++ 好的编译器 gcc/emcs;

  9. (Pre sell) ZOPO ZP998 (C2 II) 5.5 inch smart phone True Octa Core MTK6592 1920X1080 FHD screen 401 ppi 2GB/32GB 14.0Mp camera-in Mobile Phones from Electronics on Aliexpress.com

    (Pre sell) ZOPO ZP998 (C2 II) 5.5 inch smart phone True Octa Core MTK6592 1920X1080 FHD screen 401 p ...

  10. C#.NET学习笔记2---C#.第一个C#程序

    C#.NET学习笔记2---C#.第一个C#程序 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com 6.第一个C#程序:   ...