将mina异步机制之前,先了解下同步和异步的区别:
(1)同步:发送一个请求,等待返回,再下一步发送请求;简单的说,A告诉B去做某件事情,然后就一直等待,直到B做完后返回给A,A才继续做其它的事情;
(2)异步:发送一个请求,不用等待返回,可随时发送请求;简单的说:A告诉B做某件事情,然后就去干其它的事情了,B做完后再通知A。
Mina是一个非常流行的网络程序的框架,它提供的是异步的API(It provides an abstract • event-driven • asynchronous API)。
比如,如果client想要创建一个到server的连接,用mina可以这样写:
NioSocketConnector connector = new NioSocketConnector(); // 初始化connector... //.......... connector.connect(address);
看上去好像和一般的写法没什么两样。但是,这里的connector.connect()方法是一个异步的调用,意思是程序告诉mina要去连接 address,mina返回说它会做这件事,但它可能还没有做完。所以,即便“connector.connect(address);”这行代码结束 了,也并不意味着连接成功了(mina这时候可能还正在创建连接的过程中)。完整的写法应该是:
ConnectFuture connFuture = connector.connect(address); connFuture.addListener(new ConnectListener(){ //回调方法 private class ConnectListener implements IoFutureListener<ConnectFuture>{ public void operationComplete(ConnectFuture future) { if (future.isConnected()) { //get session IoSession session = future.getSession(); session.write(...); } else { logger.error("can not create the connection ."); } } } } }
这里面最重要的一个类是ConnectListener,它实现了IoFutureListener<ConnectFuture>这个接 口。这个类其实只有一个函数 – operationComplete,这是一个回调函数,它告诉mina一旦connect完成以后,就调用这个函数。我们这里的回调函数,首先判断一下 连接是否成功,如果成功,那么就向这个链接中写入数据(session.write)。
回调函数在异步机制中扮演着非常重要的角色。 因为在同步机制中,调用者会等到结果返回然后自己执行接下来的操作,比如,上面这段代码如果写成同步的,大概是这个样子:
boolean status = connector.connect(address); if(status) { session.write(...); } else { logger.error("can not create the connection ."); }
但是在异步机制中,就只能将connect后面的代码做成回调函数,注册到mina中。这样,当mina完成工作后它才知道接下去该干什么。
值得一提的是,虽然Mina号称是Asynchronous API,但它也提供了同步的方法。比如,上面这段代码,如果用Mina的同步机制是这样写的:
ConnectFuture future = connector.connect(address); future.awaitUninterruptibly(); //阻塞主线程 IoSession session = future.getSession(); // Send the first ping message session.write(....);
重点在于“future.awaitUninterruptibly();”这行代码,它会将程序阻塞住,直到连接创建好,所以,当这行代码结束后,就可以直接获取session并执行write操作。
相关推荐
MINA不仅支持同步客户端-服务器通信,还支持异步客户端-服务器通信模式。 1. **MINA服务端**:在MINA中,服务端通常被称为Acceptor。它负责监听指定的网络端口,接收客户端的连接请求,并为每个连接创建一个Session...
Mina 可以高效地完成以下任务: <br>TCP/IP 和 UDP/IP 通讯 串口通讯 VM 间的管道通讯 SSL/TLS JXM 集成 IoC 容器集成( Spring 、 Pico 等) 状态机 <br>据官方评测, APR 的效率较...
Apache Mina是一个高性能、异步事件驱动的网络应用程序框架,主要应用于开发网络通信应用,如TCP/IP和UDP/IP协议。它为开发者提供了简单、高效的API,使得编写网络服务器和客户端变得更加容易。Mina的核心特性是其...
Mina的核心在于其异步事件驱动的模型,这使得它在处理大量并发连接时表现出色。通过使用I/O多路复用技术,如NIO(非阻塞I/O),Mina能够高效地管理多个连接,而无需为每个连接创建单独的线程。这极大地降低了系统...
1. **Filter Chain**:Mina的核心设计模式之一是过滤器链。每个连接都有一系列过滤器,它们按照顺序处理入站和出站事件。过滤器可以实现特定功能,如数据编码解码、安全验证、性能监控等。 2. **Session**:Session...
学习MINA API,开发者可以掌握异步网络编程的核心技巧,理解MINA如何通过事件驱动和过滤器链机制来提高网络应用的效率。同时,MINA支持多种协议,如TCP、UDP、SSL/TLS等,使得它在各种网络通信场景下都具有广泛的...
Mina的核心优势在于它的事件驱动和异步I/O模型,这使得它在处理大量并发连接时表现出色。Mina支持多种协议,如TCP、UDP以及SSL/TLS加密,因此它非常适合用于构建如FTP服务器、HTTP服务器、数据库连接等。 Socket,...
《Mina开发之客户端详解》 Apache Mina(Minimum Asynchronous Network)是一个高度可扩展的、高性能的网络应用框架,主要用于构建服务器端的网络应用程序。它简化了网络编程的复杂性,提供了基于事件驱动和异步I/O...
3. **异步通信**:MINA的异步通信模式意味着发送请求后无需等待响应,而是继续处理其他任务,当响应到来时,MINA会通过回调函数通知应用程序。 4. **多协议支持**:MINA不绑定于特定的网络协议,开发者可以轻松创建...
- **创建过滤器链**:Mina的过滤器机制允许我们在数据传输过程中进行预处理或后处理,比如编码解码、安全检查等。 - **定义业务处理器**:实现具体的业务逻辑,处理客户端发来的消息。 **4. 配置Spring Boot** 在...
4. **ProtocolCodec**:Mina2的编码解码机制,允许开发者定义自定义的编码器和解码器。这对于处理复杂的数据格式(如XML、JSON或自定义协议)非常有用。 5. **Acceptor**:Acceptor是监听特定端口并处理连接请求的...
《Mina-1.1.7.jar:Java服务器开源框架的异步并发之力》 Mina,全称为Apache Mina,是一个用Java编写的高性能网络通信框架,它为开发网络应用提供了一种简单且强大的抽象层。Mina的核心特性在于其异步事件驱动的...
6. **Protocol Buffers**:MINA提供了协议编解码机制,允许开发者自定义协议格式。这使得MINA能灵活地支持各种网络协议,如HTTP、FTP、SMTP等。 在`apache-mina-2.0.16`这个版本中,我们可以看到以下主要内容: - ...
MINA是一个异步事件驱动的网络应用程序框架,它提供了一套可扩展的、高性能的、跨平台的网络通信工具。MINA的核心理念是基于事件驱动和非阻塞I/O模型,这使得它在处理大量并发连接时表现出色,尤其适合构建高性能的...
MINA的过滤器链机制允许开发者插入自定义的处理逻辑在数据传输过程中。每个过滤器都可以对数据进行读取、修改或写入,这样可以实现解码、编码、安全加密、流量控制等功能。过滤器链的设计提高了代码的可重用性和...
MINA(Java Mini Asynchronous Network Application Framework)是一个高性能、异步事件驱动的网络应用程序框架,主要用于简化开发服务器和客户端的网络应用,特别是TCP和UDP协议的应用。MINA为开发者提供了高度抽象...
Mina框架使用事件驱动模型,即I/O事件(如数据读取、写入完成等)被转换为回调方法调用,这样可以使得代码更加异步和非阻塞。这种模型对于处理大量并发连接特别有效,因为它能最大化地利用系统资源,提高性能。 在...
在IT行业中,网络通信是不可或缺的一部分,而Apache MINA(Model-Independent Network Application Framework)是一个高性能、异步的网络应用程序框架,广泛应用于TCP/IP和UDP协议的开发。当我们遇到"MINA断线重连...
Mina的核心特性是其事件驱动、异步(基于Java NIO)的编程模型,使得处理网络通信变得更加高效。 Mina分为1.x和2.x两个主要分支,推荐使用最新的2.0版本。框架中包含了Server和Client的封装,简化了网络通信结构。...
1. 提供稳定的网络连接:Socket为基础的连接机制,Mina则通过异步I/O和事件驱动模式优化了连接管理。 2. 数据传输:两者都能支持数据的双向传输,但在复杂场景下,Mina的过滤器链提供了更灵活的数据处理方式。 3. ...