`
zybing
  • 浏览: 459262 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

【Mina】Mina框架的例子--时间服务器

阅读更多

Mina的第一个例子,就是时间服务器:

 

服务器接收客户端的连接,

  只要客户发送不是“quit”,就把当前的时间返回给客户,

  客户发送“quit”,就关闭客户连接;

 

服务器程序:MinaTimeServer.java

import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;

import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;

/**
 * @author Administrator
 *
 */
public class MinaTimeServer {
                // 服务器监听端口
	private static final int PORT = 9123;
	
	/**
	 * 
	 */
	public MinaTimeServer() {
		// TODO Auto-generated constructor stub
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// 服务器端的主要对象
		IoAcceptor acceptor = new NioSocketAcceptor();
		
                // 设置Filter链 
		acceptor.getFilterChain().addLast("logger", new LoggingFilter());
                // 协议解析,采用mina现成的UTF-8字符串处理方式
		acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));
		
                 // 设置消息处理类(创建、关闭Session,可读可写等等,继承自接口IoHandler)
		acceptor.setHandler(new TimeServerHandler() );
                // 设置接收缓存区大小
		acceptor.getSessionConfig().setReadBufferSize(2048);
		acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
		try {
                        // 服务器开始监听
			acceptor.bind( new InetSocketAddress(PORT) );
		}catch(Exception e){
			e.printStackTrace();
		}
		
		
	}

}
 

消息处理类:TimeServerHandler.java

import java.util.Date;

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

/**
 * @author Administrator
 * 
 */
// 继承自IoHandlerAdapter,IoHandlerAdapter继承接口 IoHandler
// 类IoHandlerAdapter实现了IoHandler的所有方法,自己只要重载关心的几个方法就可以了
public class TimeServerHandler extends IoHandlerAdapter {

	@Override
	public void exceptionCaught(IoSession session, Throwable cause)
			throws Exception {
		cause.printStackTrace();
	}

                 // 这个方法是目前这个类里最主要的,
                 // 当接收到消息,只要不是quit,就把服务器当前的时间返回给客户端
                 // 如果是quit,则关闭客户端连接
	@Override
	public void messageReceived(IoSession session, Object message)
			throws Exception {
		String str = message.toString();
		if (str.trim().equalsIgnoreCase("quit")) {
			session.close();
			return;
		}

		Date date = new Date();
		session.write(date.toString());
		System.out.println("Message written...");

	}

}
 

服务器运行起来,telnet到9123端口,随便输入一串字符,回车,在屏幕上就可以显示服务器当前的时间;

输入quit,则和服务端连接中断

 

 

 

 

分享到:
评论
2 楼 zybing 2012-04-01  
香山早秋 写道
你好,我刚开始看mina框架,请问下这个程序如果是在eclipse中建立的一个java程序,运行后客户端是怎么去连接服务器的呢?命令行里面吗?从哪里输入信息呢


客户端可以就采用telnet,

自己在command窗口中,"telnet到9123端口,随便输入一串字符,回车,在屏幕上就可以显示服务器当前的时间;输入quit,则和服务端连接中断"

就可以了
1 楼 香山早秋 2012-03-29  
你好,我刚开始看mina框架,请问下这个程序如果是在eclipse中建立的一个java程序,运行后客户端是怎么去连接服务器的呢?命令行里面吗?从哪里输入信息呢

相关推荐

    mina源码+例子mina-2.0.0-M6.zip

    - **src** 目录:包含了MINA框架的源代码,通过阅读源代码,你可以深入理解MINA的设计思想和实现细节。 - **examples** 目录:包含了一系列示例项目,这些项目展示了如何使用MINA来创建不同类型的网络服务,如简单的...

    mina2.0全部jar包

    综上所述,MINA 2.0提供的这套jar包集合,不仅包含了完整的MINA框架,还涵盖了日志、状态机、依赖注入、JMX管理和数据压缩等多个方面的支持,为构建高效、可扩展的网络应用提供了全方位的工具集。开发者可以根据实际...

    Mina官网例子之时间服务器

    总之,Mina时间服务器是一个很好的起点,帮助开发者了解如何利用Mina框架创建网络服务。通过这个简单的例子,你可以学习到Mina的基本工作原理,以及如何构建和扩展基于Mina的应用。在实际项目中,Mina可以用于构建...

    apache-mina例子

    Apache Mina是一个开源项目,主要用于构建高...在`MinaTimeServer`和`MinaClient`的例子中,我们可以看到如何使用Mina轻松地建立一个简单的服务器和客户端通信系统,这对于理解和学习Mina的基本用法是非常有帮助的。

    mina框架--MINA框架是对java的NIO包的一个封装

    在上述代码中,可以看到如何使用MINA框架初始化一个服务器: 1. `NioSocketAcceptor` 是MINA中的一个核心类,它用于创建一个监听特定端口的TCP服务器。在这个例子中,`acceptor` 被创建并配置为监听指定的端口...

    Mina2.0框架源码剖析

    Mina框架的优势在于其高度模块化的设计,允许开发者根据需求自由组合过滤器和处理器,实现复杂的应用逻辑。此外,Mina还支持多种协议,包括HTTP、FTP、SMTP等,为开发者提供了丰富的选择。 通过深入分析Mina2.0的...

    mina框架实例

    在实际应用中,"mina框架实例"的`src`目录中的代码可能会展示如何创建一个简单的MINA服务器,监听端口,接收连接,以及如何处理来自客户端的数据。开发者可以通过分析这些代码来学习MINA的基本用法,如创建Filter、...

    Android长连接神器框架Mina之服务器和客户端例子

    在提供的"Android长连接Mina框架demo"中,包含了服务器和客户端的示例代码,可以帮助开发者快速理解和上手。 总的来说,Mina框架为Android开发者提供了一套完整的工具集,能够轻松构建高效、可靠的长连接服务。通过...

    mina 服务器开发例子

    总结来说,Mina是一个强大的网络通信框架,它简化了服务器开发的复杂性,提供了高效的非阻塞I/O模型和灵活的Filter Chain机制。通过理解并实践上述例子,你将能够更好地掌握Mina,并在实际项目中运用它来构建高性能...

    mina消息推送例子

    在这个“mina消息推送例子”中,我们将深入探讨Mina如何实现消息推送,并结合Spring框架进行集成。 首先,Apache Mina提供了一个异步事件驱动的网络应用编程接口(API),它简化了TCP/IP和UDP协议的处理,如HTTP、...

    mina权威性能测试例子

    Apache Mina是一个开源的网络通信应用框架,主要应用于构建高性能、高可用性的网络服务器和客户端。这个"mina权威性能测试例子"是针对Apache Mina的一个实际性能测试案例,旨在展示在特定环境下Mina如何处理大量并发...

    mina框架开发完整架包下载!

    Mina框架是一个高性能、事件驱动的网络应用框架,主要用于简化Java网络编程,特别是TCP和UDP协议的处理。它被广泛应用于开发服务器端应用,如FTP、SMTP、HTTP等协议的服务,以及任何基于TCP或UDP协议的应用。Mina的...

    Apache mina框架入门教程

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

    Mina实现RPC的例子

    Apache Mina是一个开源项目,它提供了一个高度可扩展且高性能的网络通信框架,支持多种协议,如TCP、UDP等。 首先,理解Mina的核心概念是必要的。Mina基于事件驱动和异步模型,允许开发者创建高效的网络应用。其...

    MINA网络通信框架.pdf

    它是用户自定义代码与MINA框架交互的地方。 5. IoSession:IoSession代表服务器与客户端之间的特定连接,包含了连接的两端的地址和端口号。MINA通过IoSession接口提供了对客户端连接的抽象,可以存储客户端的状态...

    Mina例子包含与spring整合

    在这个"Mina例子包含与Spring整合"的项目中,我们将探讨如何将MINA与流行的Java企业级框架Spring进行集成。 1. **Apache MINA**:MINA是基于Java NIO(非阻塞I/O)的网络应用框架,用于构建高性能、跨平台的服务器...

    MINA 1.0 版本的源码以及相关的例子依赖包等

    MINA(Multipurpose Infrastructure for Network Applications)是一个高性能、异步事件驱动的网络应用程序框架,用于构建服务器端应用程序,尤其在开发TCP和UDP协议的应用时非常有用。MINA 1.0 版本是该框架的一个...

    MINA源码与例子

    在"apache-mina-2.0.2"压缩包中,包含了MINA框架的源代码,包括核心库、示例应用、文档和测试代码。通过阅读源码,你可以深入了解MINA的设计思想和实现细节,例如如何实现非阻塞I/O、过滤器链的工作原理、以及如何...

    mina服务端例子

    在这个“Mina服务端例子”中,我们主要探讨的是如何使用Mina框架来实现一个基于Socket的非阻塞I/O(NIO)服务端。 1. **Mina框架介绍**: Mina提供了事件驱动和异步处理模型,使得开发者可以专注于业务逻辑,而...

    mina通讯例子

    这个"mina通讯例子"展示了如何利用MINA库来实现客户端与服务器之间的对象通信。 在MINA中,核心概念包括`Session`、`Filter`和`Handler`。`Session`代表了网络连接,它提供了读写数据的方法;`Filter`是数据处理链...

Global site tag (gtag.js) - Google Analytics