DANCE WITH JAVA

          開發出高質量的系統

          常用鏈接

          統計

          積分與排名

          好友之家

          最新評論

          apache mina (異步連接框架)介紹

          一、介紹
          mina(Multipurpose Infrastructure for Network Applications) 是apache的頂級項目之一,用于構造異步連接的各種網絡應用
          二、最簡單的使用實例
          package aicu.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 aicu.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文件),然后運行terminalServer
          開始->運行->cmd進入控制臺
          telnet 127.0.0.1 9123
          輸入hello
          得到當前日期
          輸入quit關閉session。

          posted on 2007-07-09 11:26 dreamstone 閱讀(6414) 評論(6)  編輯  收藏 所屬分類: 利器其它開源框架

          評論

          # re: apache mina (異步連接框架)介紹 2007-07-09 12:54 BeanSoft

          NIO, 好啊, 支持!  回復  更多評論   

          # re: apache mina (異步連接框架)介紹 2007-07-09 13:15 永恒

          介紹的簡單了點,能不能給個詳細的介紹呢,呵呵  回復  更多評論   

          # re: apache mina (異步連接框架)介紹 2007-07-09 14:09 flybean

          Apache MINA (Multipurpose Infrastructure for Network Applications) is a network application framework which helps users develop high performance and high scalability network applications easily.

          哪里看出來是異步?  回復  更多評論   

          # re: apache mina (異步連接框架)介紹 2007-07-09 15:01 BeanSoft

          啊, 不會吧, 自從 JDK 1.4 后, Tomcat 就用 NIO 改寫了, 其它很多廠商也是, 畢竟 NIO 效率要高很多.  回復  更多評論   

          # re: apache mina (異步連接框架)介紹 2007-07-09 16:49 dreamstone

          @flybean
          我也是剛開始接觸,所說的異步是只mina內部,使用它封裝的各種類,就實現了異步。我理解這個框架的作用就是不用自己再去實現異步。利用mina的類來編寫程序,在mina內部實現了異步。這也是它的作用。  回復  更多評論   

          # re: apache mina (異步連接框架)介紹 2009-10-18 17:03 tablechair

          如果我要同步的,mina實現不了?  回復  更多評論   

          主站蜘蛛池模板: 南溪县| 哈巴河县| 开化县| 荣昌县| 积石山| 砀山县| 静乐县| 达孜县| 商城县| 温州市| 冷水江市| 金门县| 邻水| 盐边县| 临夏市| 龙井市| 天门市| 安西县| 阿尔山市| 永兴县| 黄山市| 冕宁县| 金川县| 陆河县| 甘孜县| 永城市| 芜湖市| 乌审旗| 友谊县| 西贡区| 平乐县| 栾川县| 太仆寺旗| 三穗县| 长阳| 梓潼县| 博乐市| 湘西| 穆棱市| 商城县| 开阳县|