`
tianting_wx
  • 浏览: 42690 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

Apache Mina入门

    博客分类:
  • mina
阅读更多

一:说明

       Mina是什么?一句话就是“一个简洁易用的基于Tcp/IP通信的java框架”,什么?什么是框架?再问你就不要向下看了。

      Mina能干什么?先拉出来溜一下:我们用它做两个小程序,一个为服务器,收到客户机的消息后,就回送给客户机;一个是简单的客户机,一连上服务器,就发一条消息报到,然后将从服务器接到的消息再发给服务器。嗯,你是否意识到这是一个死循环的C/S通信?折腾机器这叫,编程就是要先能折腾!

 

二、实践:

      第一步:当然是下载Mina,然后在ec里建个项目,将下载后的mina-core-2.0.0-M1.jar 这个包加到你的新建的Project的lib中。

      第二步,编写服务器代码。服务器端由两个类组成:一个是Min.java,启动服务器的主类;另一个是SamplMinaServerHandler.java,这个类负责处理连结上来的客户机,即消息处理器。看代码了:

处理器代码:

package com.javake.mina.sampleserver;

import org.apache.mina.common.IoHandlerAdapter;

import org.apache.mina.common.IoSession;

 

/**

 * 自定议的消息处理器,必须实现IoHandlerAdapter类

 * @author javaFound 

 */

public class SamplMinaServerHandler extends IoHandlerAdapter {

    

    //当一个客端端连结进入时

     @Override

    public void sessionOpened(IoSession session) throws Exception {

        System.out.println("incomming client : "+session.getRemoteAddress());

    }

 

     //当一个客户端关闭时

    @Override

    public void sessionClosed(IoSession session) {

        System.out.println("one Clinet Disconnect !");

    }

 

    //当客户端发送的消息到达时:

    @Override

    public void messageReceived(IoSession session, Object message)

            throws Exception {

         / /我们己设定了服务器解析消息的规则是一行一行读取,这里就可转为String:

        String s=(String)message;

        // Write the received data back to remote peer

        System.out.println("收到客户机发来的消息: "+s);

        //测试将消息回送给客户端

     session.write(s+count);

        count++;

    }

    private   int count=0;

}

 

处理器是我们重写了org.apache.mina.common.IoHandlerAdapter的一个类,其中被重写的方法,你根据方法名应可以想到这些方法的用途吧?!编程还有一点很重要,就是要会连猜带蒙。

 

启动服务器的主类:

package com.javake.mina.sampleserver;

 

import java.net.InetSocketAddress;

 

import org.apache.mina.common.DefaultIoFilterChainBuilder;

import org.apache.mina.filter.codec.ProtocolCodecFilter;

import org.apache.mina.filter.codec.textline.TextLineCodecFactory;

import org.apache.mina.transport.socket.SocketAcceptor;

import org.apache.mina.transport.socket.nio.NioSocketAcceptor;

 

/**
 * 简单Mina Server示例
 * @author javaFound 
 */

public class MainServer {

    public static void main(String[] args) throws Exception {

        //创建一个非阻塞的Server端Socket,用NIO

        SocketAcceptor acceptor = new NioSocketAcceptor();

        //创建接收数据的过滤器

      DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();

        //设定这个过滤器将一行一行(/r/n)的读取数据

     chain.addLast("myChin", new ProtocolCodecFilter(new TextLineCodecFactory()));

        //设定服务器端的消息处理器:一个SamplMinaServerHandler对象,

        acceptor.setHandler(new SamplMinaServerHandler());

         //  服务器端绑定的端口

      int bindPort=9988;

        //绑定端口,启动服务器

     acceptor.bind(new InetSocketAddress(bindPort));

        System.out.println("Mina Server is Listing on:= " + bindPort);

    }

}

 

  就这么简单!启动服务器,试一下!不幸的是,输出的是如下的一行异常信息:

 

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory  at org.apache.mina.common.SimpleIoProcessorPool.<init>(SimpleIoProcessorPool.java:78)  at org.apache.mina.common.SimpleIoProcessorPool.<init>(SimpleIoProcessorPool.java:90)  at org.apache.mina.common.AbstractPollingIoConnector.<init>(AbstractPollingIoConnector.java:61)    at org.apache.mina.transport.socket.nio.NioSocketConnector.<init>(

 

 

D3900f5d-9fb8-3a87-8905-f9331d27621b-thumb

 

描述: 图3-Mina的体系结构

 

大小: 1.2 MB

 

        

     

0e21a363-dbcd-3e29-9bb0-50298ea521b0-thumb

 

描述: 图2-测试mina服务器

大小: 350.4 KB

 

E602e936-aec1-372e-8e9a-c8b7fec5b606-thumb

描述: 图1-测试mina服务器

大小: 595.1 KB

 

 

分享到:
评论

相关推荐

    Apache Mina 入门Demo

    通过深入学习和实践这个Apache Mina入门Demo,你将掌握如何利用Mina构建网络应用,并了解其核心特性和工作原理,这对于从事Java网络编程或者需要处理大规模并发连接的开发者来说是非常有价值的。

    Apache Mina入门(完成版)

    在“Apache Mina入门(完成版)”这份资料中,你将了解到以下关键知识点: 1. **Mina架构**:Mina的核心设计理念是事件驱动和异步通信,它采用了I/O多路复用技术,如Java NIO(非阻塞I/O),以提高服务端处理大量...

    ApacheMina入门

    Apache Mina是一个开源项目,由Apache软件基金会维护,它是一个网络通信框架,专注于提供高性能、...对于初学者,阅读《Apache Mina入门(完成版)》PDF文档将是一个很好的起点,深入学习Mina的内部机制和实践技巧。

    ApacheMina入门(完成版)

    总之,Apache Mina为Java开发者提供了一个强大、灵活的网络通信框架,通过本文档中的"Apache Mina入门(完成版).pdf",你可以系统性地学习如何使用它来构建高效稳定的网络应用。通过实践和理解,你将能够熟练地驾驭...

    apache Mina的完整学习资料

    入门Apache Mina,你需要了解以下几个关键概念: 1. **事件驱动模型**:Mina采用事件驱动模型,当网络事件(如连接建立、数据接收、连接关闭等)发生时,会触发相应的回调方法。 2. **Filter Chain**:通过Filter ...

    Apache mina框架入门教程

    Apache Mina 框架是一个强大的网络通信应用框架,它主要针对基于TCP/IP和UDP/IP的协议栈,同时也支持Java对象序列化和其他通信方式。Mina 的核心设计目标是帮助开发者快速构建高性能、高可扩展性的网络应用。它采用...

    Apache MINA 2.0 用户指南中英文对照阅读版[带书签]

    本资源包含两个 pdf 文档,一本根据官方最新文档 (http://mina.apache.org/mina-project/userguide/user-guide-toc.html) 整理的 mina_2.0_user_guide_en.pdf,一个中文翻译的 mina_2.0_user_guide_cn.pdf。...

    mina入门实例

    这就是一个基础的Mina入门实例,展示了如何使用Mina进行客户端-服务器间的通信。随着深入学习,你可以了解更多的Mina特性,如心跳机制、多线程处理、会话管理等,以构建更复杂、高效的网络应用。

    mina2资料-各种教程

    了解以上知识点是掌握Apache MINA的基础,通过提供的学习资料,如《Mina2.0学习笔记》、《Apache MINA入门基础》和《Apache MINA Server 2.0中文参考手册》等,可以深入学习MINA的API用法、设计原理和最佳实践。...

    apache mina详细介绍,适合新手入门mina

    ### Apache Mina 详解 ...Apache Mina 是一个强大且灵活的网络通信框架,非常适合初学者入门使用。通过本篇文档的学习,希望读者能够对 Mina 的基本原理和使用方法有一个全面的认识,并能够在实际项目中灵活运用。

    mina入门例子

    本入门例子将带你了解如何使用MINA进行基本的网络通信应用开发。 首先,MINA的核心概念包括`Session`、`Filter`和`Handler`。`Session`代表一个网络连接,它是数据传输的通道;`Filter`是处理`Session`中数据的...

    Apache MINA基于JAVA的网络服务器框架 教程.zip

    3. **Apache MINA 快速入门 lj棒.txt**:这可能是一个快速入门指南,帮助开发者快速理解MINA的基本概念和实现一个简单的网络服务器。 4. **SmartFoxServer 是专门为Adobe Flash设计的跨平台socket服务器**:...

    Apache+Mina入门基础

    mina是一种高效的互联网网络通信架构,此资料为入门基础。

    Apache MINA (2) Hello World!

    "示例,我们可以快速入门,了解如何创建一个简单的MINA服务端并处理客户端连接。这个过程涉及到了网络编程的基本概念,如连接建立、数据交换和连接关闭,以及MINA特有的异步事件驱动模型。通过学习和实践这个示例,...

    apache mina

    - 通过Apache_Mina入门资料,我们可以学习如何创建服务器和客户端,设置IoFilter和IoHandler,以及如何处理网络事件。 - Apache MINA Server 2.0中文参考手册提供了详细的技术指南,包括API的使用、配置示例和最佳...

Global site tag (gtag.js) - Google Analytics