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 简单示例
mina简单客户端服务端示例
运行客户端hello会弹出一个窗体,点击按钮模拟客户端主动发送。只是简单的例子很多没有处理,但是基本的数据连接没有问题
mina客户端示例,包括一些封闭的帮助类,编码器,解码器,用起来也比较简单,本人是打成jar包供其他项目使用的.
mina简单示例,Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(当然,也可以提供JAVA 对象的序列化服务、虚拟机管道通信服务等),Mina 可以帮助我们快速...
打开找到main方法运行 MinaTimeServer启动服务器端
mina socket 的一个简单示例!
NULL 博文链接:https://bjyzxxds.iteye.com/blog/1267685
本人很久没有上CSDN逛了,因为自从2012开始转入手机游戏开发行业之后...声明一下,本人使用Mina开发游戏服务器,没有打算使用Netty开发应用。制作这个示例只是为给别人帮个忙而已,然后就可以带你入门,最后你自己飞^_^
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: 快资
简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 ...
一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源代码...
MinA: 78.0,+8.2 MaxB: 60.0,-9.8 说明:输入的第1个数表示学生人数(n=9),接着输入的9个成绩中,累加和为628.5(所有小数均保留一位小数输出),平均分为69.8分;平均分以上(A档)有4人,占44.4%,平均分以下(B...
6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...
6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...
6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...
6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...
6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...