mina教程


關於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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM