`

MINA异步连接框架介绍

    博客分类:
  • java
阅读更多

   其实MINA的文档已经很详细了,就让我再多嘴几句吧……。
  主要接口:
   IoSession:一个有效的网络连接会话,此会话将一直保持连接,除非网络断开或用户主动断开连接(session.close())
   IoHandler:IoSession的监听器,也就是说当有网络事件发生时会通知IoHandler,用户不用去主动接受数据。用户只要实现此接口爱干吗干吗去吧。别忘了把它交给IoSession哦。
   IoFilter:Io过滤器,对Io数据进行过虑,此接口实现可以在连接打开时添加。
  具体说明:

import java.util.logging.Level;
  import org.apache.mina.common.ByteBuffer;
  import org.apache.mina.common.IdleStatus;
  import org.apache.mina.common.SessionConfig;
  import org.apache.mina.io.IoHandlerAdapter;
  import org.apache.mina.io.IoSession;
  import org.apache.mina.io.socket.SocketSessionConfig;
  import org.apache.mina.util.SessionLog;
  public class AppProtocolHandler extends IoHandlerAdapter {
  private boolean isLogin;
   public AppProtocolHandler() {
  }
  public void dataRead(IoSession session, ByteBuffer buffer) throws Exception {
  //当有数据读入时此方法被调用,数据封装在ByteBuffer中
   if(!isLogin){
   //如果用户没有登陆过则检查用户的合法性
   // TODO 检查用户的合法性,如果不合法者放回错误代码给客户端或直接关闭连接\n
   //如果合法则置isLogin=true
   session.close();
   }else{
   // TODO 如果用户已经登陆成功则读取消息并返回应答给客户端
   }
  }
  public void dataWritten(IoSession session, Object mark) throws Exception {
  //当数据被写入通道时此方法被调用
   SessionLog.log(Level.INFO,session,mark.toString());//必要时打印所写入的内容,mark的内容就是session.write(session,mark)中的第二个参数
  }
  public void exceptionCaught(IoSession session, Throwable arg1)
   throws Exception {
  //当出现网络异常时此方法被调用,这里要注意如果客户端要保持与服务器端的连接时不要在这里马上重新连接不然会抛出 CancelKeyException运行期异常直接导致程序死掉(特别是与服务器端有超过两个连接时一定会发生并且此异常无法捕获),建议的方法是启动一个单独的线程来完成与服务器端的重新连接
   session.close();
  
  }
  public void sessionClosed(IoSession session) throws Exception {
  //当网络连接被关闭是此方法被调用
   SessionLog.log(Level.INFO,session,"Close a Session");//必要时打印出信息
  }
  public void sessionCreated(IoSession session) throws Exception {
  //当网络连接被创建时此方法被调用(这个肯定在sessionOpened(IoSession session)方法被调用),这里可以对Socket设置一些网络参数
   SessionConfig cfg = session.getConfig();
   if (cfg instanceof SocketSessionConfig) {
   ((SocketSessionConfig) cfg).setSessionReceiveBufferSize(2048);
   ((SocketSessionConfig) cfg).setKeepAlive(true);
   ((SocketSessionConfig) cfg).setSoLinger(true, 0);
   ((SocketSessionConfig) cfg).setTcpNoDelay(true);
   ((SocketSessionConfig) cfg).setWriteTimeout(1000 * 5);
   }
  }
  public void sessionIdle(IoSession arg0, IdleStatus arg1) throws Exception {
   // 当网络通道空闲时此方法被调用,在这里可以判断是读空闲、写空闲还是两个都空闲,以便做出正确的处理
  一半的网络通讯程序都要与服务器端保持长连接,所以这里可以发一下网络测试数据以保持与服务器端的连接
  }
  public void sessionOpened(IoSession session) throws Exception {
  //当网络连接被打开时此方法被调用,这里可以对session设置一些参数或者添加一些IoFilter的实现,也可以对客户端做一些认证之类的工作
   session.getConfig().setIdleTime(IdleStatus.BOTH_IDLE, 60);
  }
  }
 

  今天就到这儿吧。

分享到:
评论

相关推荐

    MINA长连接框架实现通讯

    在"MINA长连接框架实现通讯"的场景中,我们要讨论的核心知识点包括以下几个部分: 1. **MINA框架基础**:MINA是一个基于NIO(Non-blocking I/O)的框架,它提供了一种处理大量并发连接的方式,通过非阻塞I/O模型,...

    Mina长连接框架实现Android客户端与服务器端通信

    在Android客户端与服务器端通信中,Mina框架因其高效的异步I/O处理能力,常被用来构建长连接,实现稳定且低延迟的数据传输。 长连接是指在通信过程中,一旦建立起连接,就保持该连接不关闭,直到通信结束或出现异常...

    mina 同步客户端,异步客户端

    mina是一个开源的Java框架,主要用于构建高性能、高可用性的网络通信应用。它的全名是Apache MINA (Multipurpose Infrastructure for Network Applications),它提供了一个抽象层,简化了开发复杂且高效网络服务的...

    mina异步通信

    Apache Mina是一个高性能、异步事件驱动的网络应用程序框架,主要应用于开发网络通信应用,如TCP/IP和UDP/IP协议。它为开发者提供了简单、高效的API,使得编写网络服务器和客户端变得更加容易。Mina的核心特性是其...

    Mina长连接短连接实例

    本文将深入探讨Mina框架中的长连接与短连接,并通过提供的Minaclient和MinaHost工程实例进行详细解析。 首先,我们需要了解什么是长连接和短连接。在TCP/IP通信中,短连接是指一次完整的通信过程(如HTTP请求)结束...

    Mina框架入门介绍

    Mina 提供了基于事件驱动和异步IO的编程模型,特别是利用了Java NIO作为其默认的底层支持,这使得开发者能够构建高性能的网络服务,无论是服务器端还是客户端。 在Mina框架中,`IoSession`扮演着关键角色。...

    java-mina通信框架详解.docx

    总结起来,Apache Mina是一个强大且灵活的网络通信框架,通过其事件驱动和异步IO模型,简化了网络应用的开发过程。IoService、IoProcessor、IoFilter和IoHandler这四个关键接口协同工作,确保了数据的高效传输和业务...

    socket通信,mina长连接通信

    MINA的核心优势在于它的异步事件驱动模型,可以处理大量并发连接,并且对内存管理友好。 1. **MINA架构**:MINA基于NIO(非阻塞I/O),利用Selector进行多路复用,可以在单个线程中处理多个连接,提高系统效率。 2....

    mina框架资源包

    Mina框架与即时通讯的结合,能够提供稳定、高效的网络连接,支持大量的并发用户,同时保持低延迟。这使得它在实时消息传递、在线游戏、协同办公等领域有广泛应用。通过掌握Mina框架,开发者可以更轻松地创建高性能的...

    Mina框架+常用JAR包

    Mina框架是一个高性能、异步事件驱动的网络应用程序框架,主要用Java语言编写,用于简化开发TCP、UDP和SSL/TLS协议服务器和客户端的过程。它广泛应用于构建网络服务,如FTP、SMTP、NNTP等协议的服务器,以及任何基于...

    java mina框架全套

    4. **EventDriven**:Mina基于事件驱动模型,当网络事件发生时,如连接建立、数据接收、连接关闭等,会触发相应的事件处理器,简化了异步编程的复杂性。 5. **NIOSelector**:Mina利用Java的NIO选择器,可以高效地...

    Mina框架使用demo

    在这个"Mina框架使用demo"中,我们将深入探讨如何利用Mina来实现长连接,以及如何使用其提供的API,如心跳服务和自定义编解码器。 首先,长连接是网络通信中的一个关键概念,它允许客户端和服务器之间的连接保持...

    apache mina 框架实例

    Apache Mina是一个高性能、异步事件驱动的网络应用程序框架,主要用在开发网络通信应用,如TCP/IP和UDP/IP协议的服务器和客户端。这个框架允许开发者以一种简单、高效的方式处理I/O操作,同时提供了丰富的功能,如多...

    高性能网络架构Mina框架 下载

    Mina采用了多线程异步处理机制,能够有效利用系统资源,支持大量的并发连接。同时,Mina还提供了丰富的插件机制,方便开发者根据业务需求进行功能扩展。 ##### 2.2 易用性 Mina提供了一套简洁易用的API接口,大大...

    Apache MINA框架相关资料

    Apache MINA(Multipurpose Infrastructure for Network Applications)是一个高性能、异步事件驱动的网络应用程序框架,主要用于简化开发高质量的网络服务。这个框架适用于多种协议,如TCP/IP和UDP/IP,以及NIO(非...

    MINA_框架简介适合新手

    MINA框架提供了事件驱动、异步操作的编程模型,使用JAVA NIO作为底层支持。 MINA框架的主要特点: 1. 事件驱动:MINA框架可以将整个通信过程划分为几个基本的阶段,如建立连接、数据通信、关闭连接。 2. 异步操作...

    mina框架介绍以及JAR包

    MINA(Multipurpose Infrastructure for Network Applications)框架是一个由Apache软件基金会开发的开源网络应用程序框架,主要基于Java语言。它提供了一种高度可扩展且高性能的网络通信能力,用于构建服务器端应用...

    mina框架的demo 入门,开发

    Mina提供了一个事件驱动、异步通信模型,使得开发者可以更高效地处理网络I/O操作。它抽象出了一套服务端和客户端的API,简化了网络编程的复杂性。Mina框架主要包含以下组件: 1. **IoSession**:这是Mina中的核心...

    mina框架实例

    Apache MINA(Multipurpose Infrastructure for Network Applications)是一个高性能、异步事件驱动的网络应用程序框架,主要用于简化开发可扩展且高效的网络应用,如TCP/IP和UDP/IP服务器。MINA的目标是帮助开发者...

Global site tag (gtag.js) - Google Analytics