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

时间: 2024-11-08 23:34:22

mina教程的相关文章

Mina APR传输与串口传输讲解

原文地址:Mina Transports(Apache Mina user guide Chapter6 Transport) 1.1.1. APR传输 1.1.1.1. 介绍 APR (Apache Portable Runtime) Apache便携式运行时库提供卓越的可扩展性.性能和能够更好地与本地服务器技术集成.Mina支持APR传输.在这部分,我没们将在Mina的基础之上使用APR传输.我们将使用Time Server的例子. 1.1.1.2. 先决条件 APR传输依赖以下组件: AP

2016年netty/mina/java nio视频教程java游戏服务器设计教程

2016年netty/mina/Javanio视频教程Java游戏服务器设计教程 需要的加qq:1225462853,备注:程序员学习视频 其他视频都可以索要(Netty   NET    C++ 等等) 互联网架构师教程:http://blog.csdn.net/pplcheer/article/details/71887910 netty录制时间为2015.11-2016.2月份  netty教程为加密视频!      netty12个课程已全部录制完成,相信通过这12节课的分析能让大家对n

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

在spring和mina集成的时候,要十分注意一个问题:版本. 这是一个非常严重的问题,mina官网的demo没错,网上很多网友总结的代码也是对的,但是很多人将mina集成到spring中的时候,总是会发现有个问题: java.lang.IllegalArgumentException: Cannot convert value of type [org.apache.mina.integration.beans.InetSocketAddressEditor] to required type

微信小程序实例教程(一)

序言 开始开发应用号之前,先看看官方公布的「小程序」教程吧!(以下内容来自微信官方公布的「小程序」开发指南) 本文档将带你一步步创建完成一个微信小程序,并可以在手机上体验该小程序的实际效果.这个小程序的首页将会显示欢迎语以及当前用户的微信头像,点击头像,可以在新开的页面中查看当前小程序的启动日志. 1. 获取微信小程序的 AppID 首先,我们需要拥有一个帐号,如果你能看到该文档,我们应当已经邀请并为你创建好一个帐号.注意不可直接使用服务号或订阅号的 AppID. 利用提供的帐号,登录https

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

一.学习资料 Mina入门实例(一) http://www.cnblogs.com/juepei/p/3939119.html Mina入门教程(二)----Spring4 集成Mina http://www.cnblogs.com/juepei/p/3940396.html Apache Mina 入门实例--创建一个MINA时间服务http://loftor.com/archives/apache-mina-quick-start-guide.html MINA2.0用户手册中文版--系列文

微信应用号开发教程

——第一篇 微信应用号(小程序,「应用号」的新称呼)终于来了! 目前还处于内测阶段,微信只邀请了部分企业参与封测.想必大家都关心应用号的最终形态到底是什么样子?怎样将一个「服务号」改造成为「小程序」? 我们暂时以一款简单的第三方工具的实例,来演示一下开发过程吧.(公司的项目保密还不能分享代码和截图.小白是边加班边偷偷给大家写教程.感谢「名片盒」团队提供他们的服务号来动这个手术,所以小白的教程就用「名片盒」的公众号滚动更新发布吧??) OK,为了让大家尽快看到这份教程,小白注定要熬夜了!今晚开始更

微信小程序教程汇总

目前市面上在内测期间出来的一些实战类教程还是很不错的,主要还是去快速学习小程序开发的整体流程,一个组件一个组件的讲的很可能微信小程序一升级,这个组件就变了,事实本就如此,谁让现在是内测呢.我们不怕,下面就推荐一些涵盖了大部分组件和API的实战项目类课程. 讲项目实战,主要是学习的小程序的开发思路,架构思路,组价稍带就过,不会的看文档喽,还有比官网文档更详细的教程咩. 我们小黄象社区为此录制三套实战类视频教程,实战项目快速学习小程序开发.另外社区专栏作家也贡献了优质的小程序教程专栏,下面已经列出.

Android Mina框架的学习笔记

Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架.当前发行的 MINA 版本支持基于 Java NIO 技术的 TCP/UDP 应用程序开发.串口通讯程序(只在最新的预览版中提供),MINA 所支持的功能也在进一步的扩展中.目前正在使用 MINA 的软件包括有:Apache Directory Project.Asyn

Mina框架的学习笔记——Android客户端的实现

Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架.当前发行的 MINA 版本支持基于 Java NIO 技术的 TCP/UDP 应用程序开发.串口通讯程序(只在最新的预览版中提供),MINA 所支持的功能也在进一步的扩展中.目前正在使用 MINA 的软件包括有:Apache Directory Project.Asyn