<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Mina框架研究(1)

      Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 組織一個較新的項目,它為開發(fā)高性能和高可用性的網絡應用程序提供了非常便利的框架。

      這個框架的優(yōu)點:

      – 異步
      – 無阻塞
      – 事件驅動
      – 支持TCP, UDP, APR, 串口…
      – 通過 過濾器(Filters)實現擴展性
      – 同時提供協議框架

       

      總體框架

      之前的一個項目用到了MINA,最近想再系統的整理一下,主要參考MINA 2.0 User Guide

      基于MINA框架的應用程序架構應該是這樣的:

      apparch_small

      底層是基于JAVA的NIO 1.0實現的;

      其核心部分架構是這樣的:

      mina_app_arch

       

      內部可以分為3 個層次:

      I/O Service - 執(zhí)行實際的I / O,可以選擇現成的Services如 (*Acceptor),也可以自己寫。

      I/O Filter Chain - 這是一個由多個過濾器組成的過濾器鏈,在這個環(huán)節(jié)將字節(jié)數據轉換到特定的數據結構中(Filters/Transforms bytes into desired Data Structures and vice-versa)
      I/O Handler - 實際的業(yè)務邏輯部分

       

      Server端應用

      對socket通信來說,使用比較廣泛的是基于Server端的應用,尤其是并發(fā)規(guī)模達到一定程度后,頗具挑戰(zhàn)性。那么我們來看一下,基于MINA框架的Server端應用:

      1、IOAcceptor 監(jiān)聽指定的端口,處理新的網絡連接;一旦一個新的連接到達后,IOAcceptor 就產生一個session,后續(xù)所有從這個IP和端口發(fā)送過來的請求就將通過這個Session被處理。

      2、Session創(chuàng)建后,后續(xù)所有的數據包都被人到過濾器鏈中,通過過濾器將原始的字節(jié)碼轉變成高層的對象,這個環(huán)節(jié)PacketEncoder/Decoder就十分有用。

      3、最后數據包或對象被傳送給Handler做業(yè)務邏輯處理;

      無標題

      Main.java:

      public class Main {
      private static final int PORT = 9123;
      /**
      * @param args the command line arguments
      */
      public static void main(String[] args) throws IOException {

      IoAcceptor acceptor = new NioSocketAcceptor();
      acceptor.getFilterChain().addLast( "logger", new LoggingFilter() );
      acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));

      acceptor.setHandler( new TimeServerHandler() );

      acceptor.getSessionConfig().setReadBufferSize( 2048 );
      acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 );
      acceptor.bind(new InetSocketAddress(PORT));

      }

      }

      1、創(chuàng)建IoAcceptor;

      2、加入日志記錄和解碼的過濾器,其中日志過濾器用SL4J庫記錄信息,而編碼過濾器則解碼所有收到的信息。使用 new TextLineCodecFactory() 發(fā)送的信息迕行編碼,返是MINA自帶的,功能有限,只能處理文本戒者String類型。

      3、設置ServerHandler,這里是一個自定義的Handler:TimeServerHandler;

      4、設置Session的對應的I/O processor 讀緩存區(qū)大小2048;通常這個參數不需要設置;

      5、設置空閑時間,這里的BOTH_IDLEEADER_IDLEWRITER_IDLE. 都為10秒;

      6、綁定監(jiān)聽端口9123;

      TimeServerHandler.java:

      /*
      * To change this template, choose Tools | Templates
      * and open the template in the editor.
      */

      package minatest1;

      /**
      *
      * @author THINKPAD
      */

      import java.util.Date;

      import org.apache.mina.core.session.IdleStatus;
      import org.apache.mina.core.service.IoHandlerAdapter;
      import org.apache.mina.core.session.IoSession;

      public class TimeServerHandler extends IoHandlerAdapter
      {
      @Override
      public void exceptionCaught( IoSession session, Throwable cause ) throws Exception
      {
      cause.printStackTrace();
      }

      @Override
      public void messageReceived( IoSession session, Object message ) throws Exception
      {
      String str = message.toString();
      if( str.trim().equalsIgnoreCase("quit") ) {
      session.close();
      return;
      }

      Date date = new Date();
      session.write( date.toString() );
      System.out.println("Message written...");
      }

      @Override
      public void sessionIdle( IoSession session, IdleStatus status ) throws Exception
      {
      System.out.println( "IDLE " + session.getIdleCount( status ));
      }
      }

      這里主要有一下幾個主要的方法:

      messageReceived(…),對接收到的消息(已經解碼)迕行下一步處理,這里對收到的字符串進行判斷,如果是”quit”則斷開連接;否則輸出當前時間的字符串格式;

      exceptionCaught(…),自定義異常處理, 要不然異常會被“吃掉”;

      sessionIdle,當Session處于IDLE狀態(tài)的時候,輸出空閑狀態(tài)次數;

       

       

      測試,輸入:telnet 127.0.0.1 9123,隨便輸入一串字符串,顯示當前的時間:

      image

       

      IO Service

      待續(xù)

      posted @ 2012-09-06 21:17  紅心李  閱讀(16239)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产中文字幕在线一区| 国产不卡一区不卡二区| 亚洲另类激情专区小说婷婷久| 午夜免费福利小电影| 国产在线观看免费观看| 精品国产福利一区二区| 国产精品妇女一区二区三区| 么公的好大好硬好深好爽视频| 国产无遮挡性视频免费看| 新闻| 久久国产一区二区日韩av| 兴安盟| 国产午夜福利视频合集| 中文无码热在线视频| 米奇影院888奇米色99在线| 亚洲热视频这里只有精品| 野花社区视频www官网| 黄色国产精品一区二区三区 | 无码a∨高潮抽搐流白浆| 石泉县| 在线a级毛片无码免费真人| 最新午夜男女福利片视频| 免费看欧美日韩一区二区三区| 日韩高清不卡一区二区三区| 女人香蕉久久毛毛片精品| 日韩av色一区二区三区| 亚洲中文字幕国产精品| 久热伊人精品国产中文| 亚洲中文字幕一区二区| 2022亚洲男人天堂| 国产成人精品一区二区三| 欧洲女人牲交性开放视频| 国产精品综合av一区二区| 中文字幕有码高清日韩| 日韩免费视频一一二区| 亚洲精品成人老司机影视| 亚洲Av综合日韩精品久久久| 日韩有码中文字幕国产| 中方县| 2021亚洲国产精品无码| 国产亚洲精品久久综合阿香|