关于mina介绍这里不做阐述.....

我们先做一个关于mina的helloworld

首先先下载mina包:http://mina.apache.org/ (如果你已经下载,此步骤忽略)

下载下来以后,我们主要是使用里面jar包

接下来打开eclipse,建立Java Project

引入jar包,根据官方文档提示:

我们所引入的jar文件为:

继续,开始写代码,我们先写一个server:

package org.xs.mina;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset; import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor; public class MinaTimeServer {
private static final int PORT = 9123;
public static void main(String[] args) {
//socket接收器
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 TimeServerHandler() );
//设置读取数据缓存单位byte
acceptor.getSessionConfig().setReadBufferSize( 2048 );
//设置多长时间后接收器开始空闲
acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 );
try {
//绑定某个端口,作为数据入口
acceptor.bind( new InetSocketAddress(PORT) );
} catch (IOException e) {
e.printStackTrace();
}
}
}

定义处理器:

package org.xs.mina;

import java.util.Date;

import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession; public class TimeServerHandler extends IoHandlerAdapter { //捕获异常
@Override
public void exceptionCaught( IoSession session, Throwable cause ) throws Exception
{
cause.printStackTrace();
}
//消息接收
@Override
public void messageReceived( IoSession session, Object message ) throws Exception
{
String str = message.toString();
if( str.trim().equalsIgnoreCase("quit") ) {
session.close();
return;
}
System.out.println("my message>>>>>>>>>>"+str);
Date date = new Date();
session.write( date.toString() );
}
//会话空闲
@Override
public void sessionIdle( IoSession session, IdleStatus status ) throws Exception
{
System.out.println( "IDLE " + session.getIdleCount( status ));
}
}

接下来,我们把server类,run起来,我们模拟下tcp调用,打开cmd命令行:C:\Users\xiao>telnet 127.0.0.1 9123

连接服务器,输入hello...

客户端:

服务端:

详细信息参考官方文档:http://mina.apache.org/mina-project/quick-start-guide.html

mina教程的更多相关文章

  1. Mina APR传输与串口传输讲解---zhengli

    原文地址:Mina Transports(Apache Mina user guide Chapter6 Transport) 1.1.1.APR传输 1.1.1.1.介绍 APR (Apache P ...

  2. Android 的实现TextView中文字链接的4种方法

    Android 的实现TextView中文字链接的方式有很多种. 总结起来大概有4种: 1.当文字中出现URL.E-mail.电话号码等的时候,可以将TextView的android:autoLink ...

  3. Mina入门教程(二)----Spring4 集成Mina

    在spring和mina集成的时候,要十分注意一个问题:版本. 这是一个非常严重的问题,mina官网的demo没错,网上很多网友总结的代码也是对的,但是很多人将mina集成到spring中的时候,总是 ...

  4. 微信小程序开发教程(五)开发框架:MINA

    微信团队为小程序提供的框架命名为MINA应用框架.MINA框架通过封装微信客户端提供的文件系统.网络通信.任务管理.数据安全等基础功能,对上层提供一整套JavaScript API,让开发者能够非常方 ...

  5. 微信小程序教程汇总

    目前市面上在内测期间出来的一些实战类教程还是很不错的,主要还是去快速学习小程序开发的整体流程,一个组件一个组件的讲的很可能微信小程序一升级,这个组件就变了,事实本就如此,谁让现在是内测呢.我们不怕,下 ...

  6. JAVA通信系列二:mina入门总结

    一.学习资料 Mina入门实例(一) http://www.cnblogs.com/juepei/p/3939119.html Mina入门教程(二)----Spring4 集成Mina http:/ ...

  7. Android Mina框架的学习笔记

    Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络 ...

  8. Apache Mina 入门实例

    这个教程是介绍使用Mina搭建基础示例.这个教程内容是以创建一个时间服务器. 以下是这个教程需要准备的东西: MINA 2.0.7 Core JDK 1.5 或更高 SLF4J 1.3.0 或更高 L ...

  9. 【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统 :1.技术简介之Mina连接

    欢迎阅读我的开源项目<迷你微信>服务器与<迷你微信>客户端 Apache MINA(Multipurpose Infrastructure for Network Applic ...

随机推荐

  1. QT 一些非常常用的操作

    一   如果在窗体关闭前自行判断是否可关闭二   如何用打开和保存文件对话框  三   如何使用警告.信息等对话框  四   在Windows下Qt里为什么没有终端输出五   想在源代码中直接使用中文 ...

  2. Delphi2010的RTTI增强

    Delphi编译的文件体积增大了很多.很大一部分原因是因为Delphi2010默认提供了全信息的RTTI. 每一个数据类型都有全部运行时信息.例如可以在运行时获得结构体的成员以及成员类型等. 这个功能 ...

  3. 解决phpmyadmin-1800秒超时链接失效问题

    在phpmyadmin的配置文件里 \usr\share\phpMyAdmin\libraries\config.default.php 修改 $cfg[‘LoginCookieValidity’] ...

  4. javascript的this指向

    JavaScript 是一种脚本语言,支持函数式编程.闭包.基于原型的继承等高级功能.JavaScript一开始看起来感觉会很容易入门,但是随着使用的深入,你会发现JavaScript其实很难掌握,有 ...

  5. 覆盖与重载与隐藏——SAP电面(3)

    参考:http://man.chinaunix.net/develop/c&c++/c/c.htm#_Toc520634042 8.2.1 重载与覆盖 成员函数被重载的特征: (1)相同的范围 ...

  6. [Swust OJ 403]--集合删数

    题目链接:http://acm.swust.edu.cn/problem/403/ Time limit(ms): 5000 Memory limit(kb): 65535   Description ...

  7. List(双向链表)

    List是一种双向链表结构,可以从第一个元素开始删除.插入,也可以从最后一个元素删除.插入,下面介绍一下 List 中常用的几个函数: 一.List 中的 begin 和 end 函数 : 和其他几种 ...

  8. :before和:after的内幕以及伪类

    pseudo-classes vs pseudo-elements http://m.blog.csdn.net/blog/zhuizhuziwo/7897837

  9. string模板

    string模块中包含了一个很有用的Template类,可以先写好字符串模板,后期使用的时候直接替换就可以了.         模板中使用$作为占位符前缀,使用{}包裹占位符以支持间断的标量名,使用$ ...

  10. phplib系统开发经验总结

    数据库设计: 数据库的设计一定要在了解整个系统需求的情况下,把数据库设计,及ER图画出来,数据库字典也要及时把握,只有掌握了这些才能下手开始设计界面,后期如果有需要,可以在数据库中添加数据,但要及时更 ...