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