mina教程
关于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教程的更多相关文章
- Mina APR传输与串口传输讲解---zhengli
原文地址:Mina Transports(Apache Mina user guide Chapter6 Transport) 1.1.1.APR传输 1.1.1.1.介绍 APR (Apache P ...
- Android 的实现TextView中文字链接的4种方法
Android 的实现TextView中文字链接的方式有很多种. 总结起来大概有4种: 1.当文字中出现URL.E-mail.电话号码等的时候,可以将TextView的android:autoLink ...
- Mina入门教程(二)----Spring4 集成Mina
在spring和mina集成的时候,要十分注意一个问题:版本. 这是一个非常严重的问题,mina官网的demo没错,网上很多网友总结的代码也是对的,但是很多人将mina集成到spring中的时候,总是 ...
- 微信小程序开发教程(五)开发框架:MINA
微信团队为小程序提供的框架命名为MINA应用框架.MINA框架通过封装微信客户端提供的文件系统.网络通信.任务管理.数据安全等基础功能,对上层提供一整套JavaScript API,让开发者能够非常方 ...
- 微信小程序教程汇总
目前市面上在内测期间出来的一些实战类教程还是很不错的,主要还是去快速学习小程序开发的整体流程,一个组件一个组件的讲的很可能微信小程序一升级,这个组件就变了,事实本就如此,谁让现在是内测呢.我们不怕,下 ...
- JAVA通信系列二:mina入门总结
一.学习资料 Mina入门实例(一) http://www.cnblogs.com/juepei/p/3939119.html Mina入门教程(二)----Spring4 集成Mina http:/ ...
- Android Mina框架的学习笔记
Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络 ...
- Apache Mina 入门实例
这个教程是介绍使用Mina搭建基础示例.这个教程内容是以创建一个时间服务器. 以下是这个教程需要准备的东西: MINA 2.0.7 Core JDK 1.5 或更高 SLF4J 1.3.0 或更高 L ...
- 【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统 :1.技术简介之Mina连接
欢迎阅读我的开源项目<迷你微信>服务器与<迷你微信>客户端 Apache MINA(Multipurpose Infrastructure for Network Applic ...
随机推荐
- HTML标签解释大全
一.HTML标记 标签:!DOCTYPE 说明:指定了 HTML 文档遵循的文档类型定义(DTD). 标签:a 说明:标明超链接的起始或目的位置. 标签:acronym 说明:标明缩写词. ...
- oracle 数据库数据迁移解决方案
大部分系统由于平台和版本的原因,做的是逻辑迁移,少部分做的是物理迁移,接下来把心得与大家分享一下 去年年底做了不少系统的数据迁移,大部分系统由于平台和版本的原因,做的是逻辑迁移,少部分做的是物理迁 ...
- delphi关于文件操作集锦
关于文件操作集锦 取得该快捷方式的指向EXE关键词:快捷方式 LNK unit Unit1; interface usesWindows, Messages, SysUtils, Varian ...
- 一步一步学android之控件篇——ScrollView
一个手机的屏幕大小是有限的,那么我要显示的东西显示不下怎么办?这就会使用到ScrollView来进行滚动显示,他的定义如下: 可以看到ScrollView是继承于FrameLayout的,所以Scro ...
- 【技术引擎——汇聚IT思想之间的碰撞】
转载请注明作者和出处:http://blog.csdn.net/pearyangyang/article/details/40869825 谢谢. 这篇博客将记录我所学习的那些博客大牛,方面以后 ...
- PKU POJ 1006 Biorhythms (中国剩余定理)
中国剩余定理 x = ai (mod mi) ai和mi是一组数,mi两两互质,求x 令Mi = m1*m2*~mk 其中,mi不包含在内. 因为mi两两互质,所以存在x和y, st M ...
- sysctl: command not found
在安装RedHat5.9时没有在安装时定制软件包,在后面使用sysctl命令时提示: -bash: sysctl: command not found 找了半天原来是还需要安装: rpm -ivh p ...
- SERVLET API 中 forward() 与 redirect()的区别?
答:前者仅是容器中控制权的转向, 在客户端浏览器地址栏中不会显示出转向后的地址: 后者则是完全的跳转, 浏览器将会得到跳转的地址, 并重新发送请求链接. 这样, 从浏览器的地址栏中可以看到跳转后的链接 ...
- 数组有没有 length()这个方法? String 有没有 length()这 个方法?
1.数组中有length属性. 2.String有lenth()方法.
- Hibernate学习之延迟加载
转自:http://www.cnblogs.com/xiaoluo501395377/p/3371776.html 在hibernate中我们知道如果要从数据库中得到一个对象,通常有两种方式,一种是通 ...