`
javaeyetodj
  • 浏览: 426033 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Mina简单示例

阅读更多
mina(Multipurpose Infrastructure for Network Applications) 是apache的顶级项目之一,用于构造异步连接的各种网络应用
一个高性能 Java 异步并发网络通讯框架。利用 Mina 可以高效地完成以下任务:

TCP/IP 和 UDP/IP 通讯
串口通讯
VM 间的管道通讯
SSL/TLS
JXM 集成
IoC 容器集成( Spring 、 Pico 等)
状态机


文章出处:http://www.diybl.com/course/3_program/java/javajs/2008610/124226.html
二、最简单的使用实例
package com.test.mina;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;

import org.apache.mina.common.ByteBuffer;
import org.apache.mina.common.IoAcceptor;
import org.apache.mina.common.SimpleByteBufferAllocator;
import org.apache.mina.filter.LoggingFilter;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.SocketAcceptor;
import org.apache.mina.transport.socket.nio.SocketAcceptorConfig;

public class MinaTimeServer {

    private static final int PORT = 9123;

    public static void main(String[] args) throws IOException {
        //设置buffer
        ByteBuffer.setUseDirectBuffers(false);
        ByteBuffer.setAllocator(new SimpleByteBufferAllocator());
        //定义acceptor
        IoAcceptor acceptor = new SocketAcceptor();
        //定义config
        SocketAcceptorConfig cfg = new SocketAcceptorConfig();
        //设置config,加入filter
        cfg.getSessionConfig().setReuseAddress( true );
        cfg.getFilterChain().addLast( "logger", new LoggingFilter() );
        cfg.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));
        //加入port handler cfg
        acceptor.bind( new InetSocketAddress(PORT), new TimeServerHandler(), cfg);
        System.out.println("MINA Time server started.");
    }
}
对应的handler ,handler的作用是在对应的网事件的处理代码
package com.test.mina;
import java.util.Date;

import org.apache.mina.common.IdleStatus;
import org.apache.mina.common.IoHandlerAdapter;
import org.apache.mina.common.IoSession;
import org.apache.mina.common.TransportType;
import org.apache.mina.transport.socket.nio.SocketSessionConfig;

public class TimeServerHandler extends IoHandlerAdapter {
    public void exceptionCaught(IoSession session, Throwable t) throws Exception {
        t.printStackTrace();
        session.close();
    }

    public void messageReceived(IoSession session, Object msg) throws Exception {
        String str = msg.toString();
        //如果是quit就关闭session退出
        if( str.trim().equalsIgnoreCase("quit") ) {
            session.close();
            return;
        }
        //否则打印当前日期
        Date date = new Date();
        session.write( date.toString() );
        System.out.println("Message written");
    }

    public void sessionCreated(IoSession session) throws Exception {
        System.out.println("Session created");

        if( session.getTransportType() == TransportType.SOCKET )
            ((SocketSessionConfig) session.getConfig() ).setReceiveBufferSize( 2048 );

        session.setIdleTime( IdleStatus.BOTH_IDLE, 10 );
    }
}三、使用方法:
编译上边两个类(必须先加入下面三个包,mina的jar文件),然后运行terminalServer
开始->运行->cmd进入控制台
telnet 127.0.0.1 9123
输入hello
得到当前日期
输入quit关闭session。
分享到:
评论

相关推荐

    apache mina 简单示例

    apache mina 简单示例apache mina 简单示例apache mina 简单示例apache mina 简单示例apache mina 简单示例apache mina 简单示例

    mina简单示例

    mina简单客户端服务端示例

    mina客户端简单代码示例

    运行客户端hello会弹出一个窗体,点击按钮模拟客户端主动发送。只是简单的例子很多没有处理,但是基本的数据连接没有问题

    Mina客户端示例

    mina客户端示例,包括一些封闭的帮助类,编码器,解码器,用起来也比较简单,本人是打成jar包供其他项目使用的.

    apache mina socket实例

    mina简单示例,Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(当然,也可以提供JAVA 对象的序列化服务、虚拟机管道通信服务等),Mina 可以帮助我们快速...

    mina服务器简单代码示例

    打开找到main方法运行 MinaTimeServer启动服务器端

    Mina Socket 源代码

    mina socket 的一个简单示例!

    Apache Mina – 简单的客户端/服务端应用示例

    NULL 博文链接:https://bjyzxxds.iteye.com/blog/1267685

    Netty网络框架客户端和服务端通讯示例代码

    本人很久没有上CSDN逛了,因为自从2012开始转入手机游戏开发行业之后...声明一下,本人使用Mina开发游戏服务器,没有打算使用Netty开发应用。制作这个示例只是为给别人帮个忙而已,然后就可以带你入门,最后你自己飞^_^

    vue-calc:用ElectronJS构建的简单VueJS计算器

    Vue Calc 用ElectronJS构建的简单VueJS计算器最新版本 版本0.18.04.06 麻省理工学院许可证:copyright:2017-2018-Samuele de Tomasi GitHub 创建于: Vue.js 威化电子价值十进制Google Font Roboto Google字体Mina ...

    舞蹈演员:一款轻巧的渐进式微信小程序框架

    Tina.js 一款轻巧的渐进式微信小程序...浏览更多示例 文档 如果你已经熟悉传统的小程序开发,那么上手 tina 将会非常简单。 接下来,请前往 查阅更详尽的指南。 Showcase 小程序码 项目 Hacker News 热点 :fire: 快资

    JAVA上百实例源码以及开源项目源代码

    简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 ...

    JAVA上百实例源码以及开源项目

    一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源代码...

    上海电机学院C语言实训答案

    MinA: 78.0,+8.2 MaxB: 60.0,-9.8 说明:输入的第1个数表示学生人数(n=9),接着输入的9个成绩中,累加和为628.5(所有小数均保留一位小数输出),平均分为69.8分;平均分以上(A档)有4人,占44.4%,平均分以下(B...

    java开源包1

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包11

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包2

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包3

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包6

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

Global site tag (gtag.js) - Google Analytics