当前位置: 代码迷 >> Android >> 施用Mina框架开发 QQ Android 客户端(1) Mina初级教程
  详细解决方案

施用Mina框架开发 QQ Android 客户端(1) Mina初级教程

热度:403   发布时间:2016-05-01 13:02:53.0
使用Mina框架开发 QQ Android 客户端(1) Mina初级教程
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,添加到项目,


服务端的代码:

public class MainFrame {	private static final int PORT=5469;		public static void main(String[] args) throws Exception{		IoAcceptor acceptor=new NioSocketAcceptor();		IoFilter filter=new ProtocolCodecFilter(new TextLineCodecFactory());		acceptor.getFilterChain().addLast("vestigge", filter);		acceptor.setHandler(new ServerHandler());		acceptor.bind(new InetSocketAddress(PORT));				System.out.println( "服务器正在监听端口" + PORT +"...");	}}

其中new ServerHandler()传入的是实现了IoHandler接口的类,代码如下:

public class ServerHandler extends IoHandlerAdapter {	@Override	public void messageReceived(IoSession session, Object message)			throws Exception {		System.out.println("收到客户端消息:" + message.toString());	}		@Override	public void exceptionCaught(IoSession session, Throwable cause)			throws Exception {		System.out.println("服务器出现异常:" +cause);	}}
重写了父类中的messageReceived()和exceptionCaught()
一般在messageReceived()中对客户端的请求进行业务,逻辑处理


下面在命令行用telnet测试一下,

如果是win 7没有telnet,找到“打开或关闭Windows功能” ,找到telnet客户端和telnet服务端,勾选即可,



在命令行下输入telnet 127.0.0.1 5469


然后再telnet窗口中输入几个字符回车,在控制台可以看到服务器成功收到了消息:


  相关解决方案