mina(Multipurpose Infrastructure for Network Applications) 是apache的顶级项目之一,用于构造异步连接的各种网络应用
一个高性能 Java 异步并发网络通讯框架。利用 Mina 可以高效地完成以下任务:
TCP/IP 和 UDP/IP 通讯
串口通讯
VM 间的管道通讯
SSL/TLS
JXM 集成
IoC 容器集成( Spring 、 Pico 等)
状态机
二、最简单的使用实例
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文件),然后运行MinaTimeServer
开始->运行->cmd进入控制台
telnet 127.0.0.1 9123
输入hello
得到当前日期
输入quit关闭session。
分享到:
相关推荐
标签中的"mina"和"mina2"指代Apache MINA框架的不同版本,"例子"表示这是一个示例代码集合,"服务端"和"客户端"则明确了示例涵盖了网络通信的两端——服务器端和客户端的实现。 根据提供的压缩包文件名称列表"mina...
"这句话暗示了这个压缩包可能包含了一些易于理解的示例代码,旨在帮助初学者快速上手Mina。这些例子可能涵盖了如何创建服务器端、客户端,以及如何处理各种网络事件,如数据接收、发送、连接管理和断开等。 在实际...
根据提供的文件信息,我们可以深入探讨Mina框架的开发步骤及相关配置细节。Mina(Multi-threaded IO Network Abstraction)是...此外,对于初学者来说,理解这些基本概念是非常重要的,它们是掌握Mina框架的关键所在。
这个例子是一个很好的起点,可以帮助初学者理解如何在Mina框架中集成安全功能。如果有任何问题或需要进一步的帮助,可以联系pengli.bj@163.com获取支持。记住,安全无小事,正确配置和使用`SslFilter`对于保护用户...
MINA2实用手册对于初学者来说是一个很好的学习资源,因为它涵盖了如何初始化服务端和客户端,以及配置各种关键参数。 一、服务端初始化及参数配置 服务端的初始化主要涉及以下几个步骤: 1. **创建Acceptor**: ...
无论是对于初学者还是经验丰富的开发者而言,MINA都值得深入了解和学习。通过合理利用MINA提供的特性,开发者可以极大地提高网络应用程序的性能和稳定性,从而更好地满足现代互联网应用的高并发需求。
标题提到的"通信测试例子"可能是指一个用于教学或实践的示例项目,旨在帮助初学者或开发者理解通信协议、网络连接以及数据传输的基本原理。描述中的重复内容可能是由于误输入,我们主要关注标题和标签提供的信息。 ...
而`SMSreadSend_demo`很可能是示例代码或者测试程序,展示了如何使用这个库来发送和接收短信,这对于初学者快速上手非常有帮助。 在实际使用过程中,开发者需要了解如何创建GSM modem的实例,配置端口参数,如何...
这个“netty入门例子”旨在帮助初学者理解Netty的基本用法和特性,而不是简单地翻译官方文档,它提供了几个开发模板,以便于深入理解Netty中的消息异步通信机制和TCP通信的封装。 首先,Netty的核心是它的异步模型...
7. **mina-examples**:示例代码或者教程,帮助初学者快速理解和上手MIMA框架,这些例子通常涵盖了基础用法和一些高级特性。 8. **mina-docs**:文档和API参考,是开发者了解框架功能、方法和最佳实践的重要资源。 ...
在这个例子中,开发者使用的是`<script>`标签来引入jQuery 1.4版本的文件。这一步是必不可少的,因为所有jQuery的功能都将基于这个库。 ```html <script language="javascript" src="jquery-1.4.js"></script> ``` ...
这部分包含了一系列实用的例子,旨在帮助开发者解决常见的集成问题,例如: - **文件传输**:演示如何使用 Camel 进行文件传输。 - **消息转换**:展示如何将不同格式的消息转换为统一格式。 - **异步处理**:介绍...
Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...
在开始深入解析Dubbo源码之前,首先需要明确的是,Dubbo虽然代码量不算庞大,但是它涉及的技术领域非常广泛,对于初学者来说,可能需要具备一定的前置知识才能更好地理解和学习。以下是建议的学习路径: 1. **Java...