歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

使用Mina框架開發 QQ Android 客戶端

Apache MINA是一個網絡應用程序框架,用來幫助用戶簡單地開發高性能和高可靠性的網絡應用程序。它提供了一個通過Java NIO在不同的傳輸例如TCP/IP和UDP/IP上抽象的事件驅動的異步API。

  Apache MINA 也稱為:
  ● NIO 框架庫
  ● 客戶端服務器框架庫
  ● 一個網絡套接字庫
  MINA雖然簡單但是仍然提供了全功能的網絡應用程序框架:
  ● 為不同的傳輸類型提供了統一的API:
  ○ 通過Java NIO提供TCP/IP 和 UDP/IP支持
  ○ 通過RXTX提供串口通訊(RS232)
  ○ In-VM管道通訊
  ○ 你能實現你自己的API!
  ● 過濾器作為一個擴展特性; 類似Servlet過濾器
  ● 低級和高級的API:
  ○ 低級: 使用字節緩存(ByteBuffers)
  ○ 高級: 使用用戶定義的消息對象(objects)和編碼(codecs)
  ● 高度定制化線程模型:
  ○ 單線程
  ○ 一個線程池
  ○ 一個以上的線程池(也就是SEDA)
  ● 使用Java 5 SSL引擎提供沙盒(Out-of-the-box) SSL · TLS · StartTLS支持
  ● 超載保護和傳輸流量控制
  ● 利用模擬對象進行單元測試
  ● JMX管理能力
  ● 通過StreamIoHandler提供基於流的I/O支持
  ● 和知名的容器(例如PicoContainer、Spring)集成
  ● 從Netty平滑的遷移到MINA, Netty是MINA的前輩。

MINA 基本類的描述 :
IoAccepter 相當於網絡應用程序中的服務器端
IoConnector 相當於客戶端
IoSession 當前客戶端到服務器端的一個連接實例
IoHandler 業務處理邏輯
IoFilter 過濾器用於懸接通訊層接口與業務層接口

要編寫和運行一個基於Apache MINA 2.0的程序,需要JDK 5.0以上版本,

下面看一個domo:

准備工作:

mina-core-2.0.0-M6.jar
slf4j-api-1.5.2.jar


在官網下載到mina,找出這幾個jar,添加到項目,

服務端的代碼:

  1. public class MainFrame { 
  2.     private static final int PORT=5469; 
  3.      
  4.     public static void main(String[] args) throws Exception{ 
  5.         IoAcceptor acceptor=new NioSocketAcceptor(); 
  6.         IoFilter filter=new ProtocolCodecFilter(new TextLineCodecFactory()); 
  7.         acceptor.getFilterChain().addLast("vestigge", filter); 
  8.         acceptor.setHandler(new ServerHandler()); 
  9.         acceptor.bind(new InetSocketAddress(PORT)); 
  10.          
  11.         System.out.println( "服務器正在監聽端口" + PORT +"..."); 
  12.     } 

其中new ServerHandler()傳入的是實現了IoHandler接口的類,代碼如下:

  1. public class ServerHandler extends IoHandlerAdapter { 
  2.  
  3.     @Override 
  4.     public void messageReceived(IoSession session, Object message) 
  5.             throws Exception { 
  6.         System.out.println("收到客戶端消息:" + message.toString()); 
  7.     } 
  8.      
  9.     @Override 
  10.     public void exceptionCaught(IoSession session, Throwable cause) 
  11.             throws Exception { 
  12.         System.out.println("服務器出現異常:" +cause); 
  13.     } 
  14.  

重寫了父類中的messageReceived()和exceptionCaught()

一般在messageReceived()中對客戶端的請求進行業務,邏輯處理

下面在命令行用telnet測試一下,

如果是win 7沒有telnet,找到“打開或關閉Windows功能” ,找到telnet客戶端和telnet服務端,勾選即可,

在命令行下輸入telnet 127.0.0.1 5469

然後再telnet窗口中輸入幾個字符回車,在控制台可以看到服務器成功收到了消息:

Copyright © Linux教程網 All Rights Reserved