關於mina介紹這里不做闡述.....
我們先做一個關於mina的helloworld
首先先下載mina包:http://mina.apache.org/ (如果你已經下載,此步驟忽略)
下載下來以后,我們主要是使用里面jar包
接下來打開eclipse,建立Java Project
引入jar包,根據官方文檔提示:
我們所引入的jar文件為:
繼續,開始寫代碼,我們先寫一個server:
package org.xs.mina; import java.io.IOException; import java.net.InetSocketAddress; import java.nio.charset.Charset; import org.apache.mina.core.service.IoAcceptor; import org.apache.mina.core.session.IdleStatus; import org.apache.mina.filter.codec.ProtocolCodecFilter; import org.apache.mina.filter.codec.textline.TextLineCodecFactory; import org.apache.mina.filter.logging.LoggingFilter; import org.apache.mina.transport.socket.nio.NioSocketAcceptor; public class MinaTimeServer { private static final int PORT = 9123; public static void main(String[] args) { //socket接收器 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() ); //設置讀取數據緩存單位byte acceptor.getSessionConfig().setReadBufferSize( 2048 ); //設置多長時間后接收器開始空閑 acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 ); try { //綁定某個端口,作為數據入口 acceptor.bind( new InetSocketAddress(PORT) ); } catch (IOException e) { e.printStackTrace(); } } }
定義處理器:
package org.xs.mina; import java.util.Date; import org.apache.mina.core.service.IoHandlerAdapter; import org.apache.mina.core.session.IdleStatus; 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; } System.out.println("my message>>>>>>>>>>"+str); Date date = new Date(); session.write( date.toString() ); } //會話空閑 @Override public void sessionIdle( IoSession session, IdleStatus status ) throws Exception { System.out.println( "IDLE " + session.getIdleCount( status )); } }
接下來,我們把server類,run起來,我們模擬下tcp調用,打開cmd命令行:C:\Users\xiao>telnet 127.0.0.1 9123
連接服務器,輸入hello...
客戶端:
服務端:
詳細信息參考官方文檔:http://mina.apache.org/mina-project/quick-start-guide.html