天天看點

學習socket nio 之 mina執行個體(1)2:mina執行個體

1:mina之淺談

           mina是apache基于socket nio的一套架構,可以從apache官網下載下傳jar包和源碼。試用起來非常友善,也非常強大。如果對socket nio還不是很了解的話:請看一下這兩篇文章

            學習bytebuffer和socket nio執行個體

           這裡我簡單的介紹一下mina的架構:

           IoService:這個接口是網絡的入口,IoAcceptor和IoConnector都實作這個接口。從名字上我們可以看得出來IoAcceptor是接受連結的(服務端),而IoConnector是用來連結的(用戶端)。

           IoFilter:過濾器。他是用來過濾消息的。從IoService(網絡接口)出來的資料或者進入IoService(網絡接口)的資料都會經過IoFilter的處理。最重要的就是日志和解碼和編碼。

          IoHandler:處理器。它是連結應用和IoFilter的橋梁,是進行業務處理的,從IoFilter出來的資料會發到IoHandler中處理。

學習socket nio 之 mina執行個體(1)2:mina執行個體
看着這張圖檔,就應該明白mina中的資料時怎麼傳輸的了吧。看起來很簡單的樣子?

2:mina執行個體

目标:

     不管用戶端發送什麼資料到服務端,服務端口傳回Hello world。

服務端實作

IoHandler:業務處理層

import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
 
public class ServerHandler extends IoHandlerAdapter{
    @Override
    public void exceptionCaught(IoSession session, Throwable cause) throws Exception{
        System.out.println("報錯啦............");
        cause.printStackTrace();
    }
    
    @Override
    public void messageReceived( IoSession session, Object message ) throws Exception{
        String str = message.toString();
        System.out.println("messageReceived:"+str);
        session.write("hello world");
    }
    
    @Override
    public void sessionIdle( IoSession session, IdleStatus status ) throws Exception{
        System.out.println( "IDLE " + session.getIdleCount( status ));
    }
}