Apache MINA(Multipurpose Infrastructure for Network Applications) 是
Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。当前发行的 MINA 版本支持基于 Java
NIO 技术的 TCP/UDP 应用程序开发、串口通讯程序(只在最新的预览版中提供),MINA 所支持的功能也在进一步的扩展中。
Apache Mina 1.0版本需要jdk1.4以上版本的支持,而1.1版本及2.0版本需要JDK5以上的支持。
使用Apache Mina来开发网络应用程序非常的方便,服务器端如果使用了MINA框架,客户端可以使用MINA框架也可以不使用MINA框架。
MINA的多线程模式设置也非常方便,在服务器端,它提供了多种可选的线程模式,在不同的处理阶段实现多线程。
MINA编程非常的简单,下边给出一个服务器端实现和普通socket客户端实现(MINA客户端的例子很多,可参考MINA的示例程序)。
下边的代码是基于MINA2.0的。
Server.java:
package cn.xxx.xxx.test;
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.executor.ExecutorFilter;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
/**
* mina服务器测试
*
* @version 1.0 2010-2-5
* @author huangyuanmu
* @since JDK 5.0
*/
public class Server {
/**
* 创建mina服务器进行监听
*
* @author huangyuanmu 2010-2-9
* @param args
*/
public static void main(String[] args) {
IoAcceptor acceptor = new NioSocketAcceptor();
acceptor.getSessionConfig().setReadBufferSize(2048);
acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
acceptor.setHandler(new ServerHandler());
acceptor.getFilterChain().addLast("codec",
new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("GBK"))));
acceptor.getFilterChain().addLast("logger", new LoggingFilter());
acceptor.getFilterChain().addLast("exceutor", new ExecutorFilter());
try {
acceptor.bind(new InetSocketAddress(8080));
} catch (IOException e) {
e.printStackTrace();
}
}
}
ServerHandle.java:
package cn.xxx.xxx.test;
import org.apache.log4j.Logger;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
/**
* mina通信处理实现类
*
* @version 1.0 2010-2-5
* @author huangyuanmu
* @since JDK 5.0
*/
public class ServerHandler extends IoHandlerAdapter {
/**
* 产生异常以后的处理
*/
public void exceptionCaught(IoSession session, Throwable cause){
session.close(true);
e.printStackTrace();
}
/**
* 接收到消息以后的处理
*/
public void messageReceived(IoSession session, Object msg) throws Exception {
String msgStr = (String)msg;
System.out.println("收到客户端发送的字符串:" + msgStr);
session.write(msgStr);
}
}
Client.java:
package cn.xxx.xxx.test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.Socket;
/**
* 访问mina服务器端测试
*
* @version 1.0 2010-2-5
* @author huangyuanmu
* @since JDK 5.0
*/
public class Client {
static Socket server;
public static void main(String[] args) {
try {
server = new Socket(InetAddress.getLocalHost(), 8080);
BufferedReader in = new BufferedReader(new InputStreamReader(server
.getInputStream(),"GBK"));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(server.getOutputStream(),"GBK"));
out.write("你好,mina");
out.newLine();
out.flush();
System.out.println("服务器端接收到字符串并返回:" + in.readLine());
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
可以看出,使用MINA编写Socket通信程序,非常的方便。
分享到:
相关推荐
Apache Mina是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个"apache-mina-2.0.4.rar"压缩包包含的是Apache Mina 2.0.4版本的源代码,是深入理解和定制Mina的...
Apache MINA是一个网络应用程序框架,用来帮助用户简单地开发高性能和高可靠性的网络应用程序。 apache-mina-2.0.7-bin.zip,apache-mina-2.0.7-src.zip,log4j-1.2.17.zip,slf4...涉及mina开发相关的基本上都在这里。
Apache Mina的核心理念是提供一个与传输协议无关的抽象层,开发者可以通过它来开发基于TCP/IP、UDP或其他网络协议的应用。Mina简化了网络编程的复杂性,使得开发者可以专注于业务逻辑,而无需关注底层通信细节。 在...
Apache Mina是一个高度可扩展的网络通信框架,主要用于构建高性能、高效率的服务端应用程序。它提供了事件驱动、异步I/O处理模型,使得开发者能够更专注于业务逻辑,而不是底层网络编程的复杂性。Mina主要应用于Java...
Apache MINA(Multipurpose Infrastructure for Network Applications)是一个开源框架,主要设计用于简化网络应用程序的开发,尤其是基于TCP和UDP协议的应用。它提供了高度可扩展和高性能的非阻塞I/O模型,使得...
Apache Mina是一个开源项目,主要用于构建高性能、高可用性的网络通信应用。它是Java语言开发的,提供了一套简单而强大的API,使得开发者可以方便地创建网络服务器和客户端应用程序。Mina的目标是简化网络编程,使其...
Apache MINA FtpServer提供了一个可扩展且高效的FTP服务器实现,允许开发人员自定义认证机制、数据存储策略以及许多其他特性。 **FtpServer基本架构** Apache MINA FtpServer的核心组件包括服务器引擎、服务器端口...
MINA 提供了一套高级的网络通信抽象层,简化了开发过程,特别是对于处理TCP/IP和UDP/IP协议栈的应用。MINA的核心概念是事件驱动和非阻塞I/O,这使得它在处理大量并发连接时表现出色。 在这个"Apache MINA2学习笔记...
Apache MINA(Multipurpose Infrastructure for Network Applications)是一个高性能、异步事件驱动的网络应用程序框架,主要用于简化开发高质量的网络服务。这个框架适用于多种协议,如TCP/IP和UDP/IP,以及NIO(非...
Apache MINA是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。 当前发行的 MINA 版本支持基于 Java NIO 技术的 TCP/UDP 应用程序开发、串口通讯程序(只在最新的预览版...
Apache MINA 2.0 是一款高性能且易于使用的网络应用程序框架,它简化了开发人员在网络编程方面的负担,允许开发者专注于应用程序的核心功能,而不是底层的网络细节。MINA 2.0 支持多种网络协议,包括 TCP 和 UDP,...
Apache Mina Server 2.0 是一款高性能、可扩展的网络通信框架,广泛应用于开发网络应用服务器,如TCP/IP和UDP服务。这个框架允许开发者用Java编写高效的网络应用程序,简化了网络编程的复杂性。Mina 2.0 版本在前一...
Apache MINA是一个高性能、异步事件驱动的网络应用程序框架,主要设计用于简化开发服务器端的高性能网络应用。这个框架提供了一种抽象层,允许开发者使用相同的API处理多种不同的传输协议,如TCP/IP、UDP/IP以及SSL/...
Apache Mina是一个高度可扩展的网络通信框架,主要用于构建高性能、高并发的网络应用程序,如服务器端应用。它提供了一种简单而强大的编程模型,使得开发者可以专注于业务逻辑,而不是底层的网络通信细节。Spring...
这个压缩包包含了Apache Mina开发所需的全部jar包,让你在构建基于Mina的项目时,无需再单独寻找和整合各个依赖。 首先,让我们详细了解一下Apache Mina的核心功能和设计原则: 1. **非阻塞I/O**:Mina采用Java ...
Apache Mina是一个开源的网络通信应用框架,主要应用于构建高性能、高可用...通过这两份手册的学习,你将能够熟练掌握Apache Mina框架,从而在开发网络应用时更加得心应手,提高开发效率,构建出稳定且高效的网络服务。
apache-mina-2.0.4 架包 源码 学习教程.apache mina是Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。当前发行的 MINA 版本支持基于 Java NIO 技术的 TCP/UDP 应用程序...
Mina 2.0.16 简介 代码实例 Mina 是Apache开发的一个开源的网络通信框架,基于java NIO实现。 建立server与client之间的会话连接,对会话消息进行过滤; 非阻塞消息会话机制; 通过自定义的通信协议进行编解码消息。