`
tomotoboy
  • 浏览: 167327 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Mina入门

    博客分类:
  • Mina
阅读更多
Mina是什么?Apache的定义如下:
Apache MINA is a network application framework which helps users develop high performance and high scalability network applications easily. It provides an abstract · event-driven · asynchronous API over various transports such as TCP/IP and UDP/IP via Java NIO.
Mina是一个网络应用架构,它能帮助我们很轻松的开发出功能强大、可控性强的网络应用。它在 TCP/IP及UDP/IP的基础上通过 Java NIO提供了一个抽象的事件驱动的异步传输消息的编程接口。目前最新版本是:Apache MINA 2.0.0-M5 release。
根据Mina的样例,我将演示一个HelloWorldServer和HelloWordClient的创建

准备工作
您需要准备如下包:

下载地址如下:
mina-2.0.0-M5.zip:http://mina.apache.org/index.html
slf4j-1.5.6.zip:www.slf4j.org
准备好之后,编写HelloWorldServerHandler
package com.ysh.mina.sampleserver;

import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;

public class HelloWorldServerHandler 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("Hello Word: "+"Greeting From Server");
	}	
}


编写HelloWorld服务器端启动程序HelloWorldServer
package com.ysh.mina.sampleserver;

import java.net.InetSocketAddress;

import org.apache.mina.core.filterchain.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;

public class HelloWorldServer {
	public static void main(String[] args) {
		
		 
		try{
			//创建一个非阻塞的Server端Socket,用NIO
			SocketAcceptor acceptor = new NioSocketAcceptor();		
			
			//创建接收数据的过滤器
			DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
			
			//设定这个过滤器将一行一行(/r/n)的读取数据
			chain.addLast("myChin", new ProtocolCodecFilter(new	TextLineCodecFactory()));
			
			//设定服务器端的消息处理器:一个SamplMinaServerHandler对象,
			acceptor.setHandler(new HelloWorldServerHandler());		
			
			// 服务器端绑定的端口
			int bindPort=9988;			
			
			//绑定端口,启动服务器
			acceptor.bind(new InetSocketAddress(bindPort));
			System.out.println("Mina Server is Listing on:= " + bindPort);
			
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}	
	
	}
}


接着编写HelloWorldClientHandler
package com.ysh.mina.sampleclient;

import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
public class HelloWorldClientHandler extends IoHandlerAdapter{
	
	//当一个客端端连结进入时
	@Override
	public void sessionOpened(IoSession session) throws Exception {				
		session.write("Hello World: server :"+ "Client: "+session.getRemoteAddress()+" is coming!");
	}
	
	//当一个客户端关闭时
	@Override
	public void sessionClosed(IoSession session) {
		System.out.println("Clinet"+session.getRemoteAddress()+" is disconnected!");
	}
	
	//当服务器端发送的消息到达时:
	@Override
	public void messageReceived(IoSession session, Object message)throws Exception {
		
		//我们己设定了服务器解析消息的规则是一行一行读取,这里就可转为String:		
		String s=(String)message;		
		System.out.println("收到服务器发来的消息: "+s);		
		
	}
}


编写我们的客户端程序和服务器端很相似HelloWorldClient

package com.ysh.mina.sampleclient;

import java.net.InetSocketAddress;
import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketConnector;

public class HelloWorldClient {
	public static void main(String[] args) throws Exception {
		//实际应用中,这里可以生成一个线程来监听			
		// Create TCP/IP connector.
		NioSocketConnector connector = new NioSocketConnector();
		
		// 创建接收数据的过滤器		
		DefaultIoFilterChainBuilder chain = connector.getFilterChain();
		
		//设定这个过滤器将一行一行(/r/n)的读取数据		
		chain.addLast("myChin", new ProtocolCodecFilter(new TextLineCodecFactory()));
		
		//设定服务器端的消息处理器:一个SamplMinaServerHandler对象,		
		connector.setHandler(new HelloWorldClientHandler());
		
		connector.setConnectTimeoutCheckInterval(3000000);
		
		//连结到服务器:
		try
		{
			ConnectFuture cf = connector.connect(new InetSocketAddress("localhost", 9988));
			cf.awaitUninterruptibly();
			cf.getSession().getCloseFuture().awaitUninterruptibly();			
			
		}
		catch(Exception e)
		{
			connector.dispose();
			System.out.println("未能连接到服务器");
		}
	}
}

大功告成:可以运行了。。。。
  • 大小: 3 KB
分享到:
评论

相关推荐

    Apache Mina入门(完成版)

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

    mina入门实例

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

    Apache Mina 入门Demo

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

    Mina入门:mina版之HelloWorld

    **Mina入门:Mina版之HelloWorld** Apache Mina是一个开源项目,它提供了一个高度模块化、高性能的网络通信框架。Mina旨在简化网络应用的开发,支持多种传输协议,如TCP、UDP、HTTP、FTP等。在这个“Mina入门:Mina...

    mina入门例子

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

    ApacheMina入门(完成版)

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

    ApacheMina入门

    ### Apache Mina 入门详解 #### 一、Apache Mina 概览 Apache Mina 是一款基于 Java 的网络通信框架,专为简化网络应用程序的开发而设计,尤其适用于 TCP/IP 和 UDP 协议的通信场景。Mina 提供了一套高度抽象化的 ...

    mina 入门 教程

    3. **Mina入门步骤** - **设置环境**:首先,你需要在项目中引入Mina的依赖库,通常是通过Maven或Gradle来管理。 - **创建ProtocolCodecFactory**:定义数据编码和解码的规则,以便Mina可以正确处理网络传输的数据...

    Mina入门程序

    《Mina入门程序详解》 Mina(全称Apache MINA,即Multi-purpose Infrastructure for Network Applications)是一个开源的网络通信框架,它为Java开发者提供了一种高性能、易使用的网络编程工具。Mina允许开发者创建...

    Apache Mina入门

    ### Apache Mina 入门详解 #### 一、Mina简介与应用场景 ##### Mina概述 Mina(**Mini Network Application**)是一个简洁且易于使用的Java网络应用开发框架,主要针对TCP/IP通信进行优化设计。它能够帮助开发者...

    mina入门程序

    《Mina入门程序详解》 Apache Mina是一个开源的网络通信框架,主要用于简化高效、可扩展和高性能的网络应用程序开发。Mina提供了高度抽象的网络通信API,支持TCP/IP和UDP/IP协议,常用于实现服务器端的应用,如FTP...

    Apache+Mina入门基础

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

    mina2学习笔记

    #### 一、Mina入门详解 ##### 第一步:下载使用的Jar包 - **mina-core-2.0.0-M1.jar**:这是Mina核心库,提供了NIO框架的基本功能。 - **slf4j-api-1.5.2.jar**:用于日志记录的高级接口,简化了日志记录的过程。 ...

    mina2资料-各种教程

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

    Apache Mina 2 完全自学手册

    #### Mina入门 **第一步:下载并配置JAR包** - **mina-core-2.0.0-M1.jar**:这是Mina的核心库,提供了主要的功能和API。 - **slf4j-api-1.5.2.jar** 和 **slf4j-log4j12-1.5.2.jar**:用于日志记录,提供了一致的...

    Mina学习笔记

    **一、Mina入门** 1. **下载使用的Jar包**: 要使用Mina,首先需要下载其发布的jar包,这些包通常包含了Mina的核心库和其他依赖库。你可以从Apache官方网站或者通过Maven仓库获取。 2. **工程创建配置**: 在...

Global site tag (gtag.js) - Google Analytics