`
wen866595
  • 浏览: 268500 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

MINA 简单示例

 
阅读更多

构建一个TCP的时间服务器和客户端来了解构建基于MINA 的应用程序的步骤。

 

需要的最小jar 包:

日志是必须的,log4j.properties 配置为:

log4j.rootCategory= DEBUG,   stdout

 

log4j.appender.stdout= org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout= org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern= [%d{HH\ : mm \: ss }]   %t   %p   %X{name}

 

在服务器端:

 

 

创建一个接收器来监听连接请求:

NioSocketAcceptor acceptor =  new  NioSocketAcceptor();

 

 

 

构建过滤器链:

acceptor.getFilterChain().addLast( "logger" new  LoggingFilter());

acceptor.getFilterChain().addLast( "codec" , new  ProtocolCodecFilter( new  TextLineCodecFactory(Charset. forName ( "UTF-8" ))));

 

注:LoggerFilter 用来记录各种事件。协议编解码过滤器用编解码工厂初始化,用来在原始字节和高层对象之间进行编解码。这是使用的MINA自带的文本行解码器。

 

 

 

设置IoHandler

acceptor.setHandler( new  TimeServerHandler());

 

 

 

设置服务器的属性(如缓存大小等):

acceptor.getSessionConfig().setReadBufferSize(1024);

acceptor .getSessionConfig().setIdleTime(IdleStatus. BOTH_IDLE , 10);

 

 

 

把服务绑定到指定的端口上:

acceptor.bind( new  InetSocketAddress(8985));

 

 

 

编写业务逻辑处理器IoHandler

public   class  TimeServerHandler  extends  IoHandlerAdapter {

private  Logger  log  = LoggerFactory. getLogger (TimeServerHandler. class );

 

@Override

public   void  messageReceived(IoSession session, Object message)

throws  Exception {

log .info( "messageReceived" );

String str = message.toString();

if ( "quit" .equalsIgnoreCase(str.trim())) {

session.close( true );

return ;

}

Date date =  new  Date();

session.write(str +  " : "  + date.toString());

log .info( "message writter ..." );

}

}

 

 

注:用户可以自己选择覆盖其他的方法,以处理异常情况、连接空闲等事件。

 

 

 

telnet  命令来测试时间服务器:

telnet 127.0.0.1 8985

 

 

 

在客户端:

 

创建连接器:

IoConnector connector =  new  NioSocketConnector();

 

 

 

创建过滤器链:

connector.getFilterChain().addLast( "logger" new  LoggingFilter());

connector .getFilterChain().addLast( "codec" new  ProtocolCodecFilter( new  TextLineCodecFactory()));

 

 

 

设置处理器:

connector.setHandler( new  ClientHandler());

 

 

 

连接到服务器:

ConnectFuture  cf = connector.connect( new  InetSocketAddress( "127.0.0.1" , 8985));

 

 

 

等待连接成功:

cf. awaitUninterruptibly ();

 

 

 

获取连接的会话:

IoSession session = cf.getSession();

 

 

 

向服务器写请求:

session.write( "abc" );

 

 

 

关闭连接:

session.close( false );

 

 

 

关闭连接器,释放资源:

connector.dispose();

 

 

 

业务处理器:

public   class  ClientHandler  extends  IoHandlerAdapter {

 

@Override

public   void  messageReceived(IoSession session, Object message)

throws  Exception {

String msg = (String) message;

System. out .println( "response :"  + msg);

}

}

 

 

 

 

 

  • 大小: 5.4 KB
1
3
分享到:
评论
2 楼 wen866595 2014-02-18  
hzxlb910 写道
其实写内容的不错,就是排版太难看了。

这个好像当时是直接从word里拷贝过来的。
1 楼 hzxlb910 2014-02-18  
其实写内容的不错,就是排版太难看了。

相关推荐

    apache mina 简单示例

    在"apache mina 简单示例"中,我们通常会涉及以下几个关键概念: 1. **项目设置**:首先,你需要在你的开发环境中集成Apache Mina库。这可以通过在Maven或Gradle的依赖管理中添加Mina的相关依赖来实现。例如,在...

    mina简单示例

    标题中的"mina简单示例"指的是使用Apache Mina框架构建一个简单的客户端和服务端的程序。在Java开发中,Mina提供了一种高效的方式来处理网络连接和数据传输,特别适合于构建大型、复杂的网络服务。 描述中的"mina...

    Mina 1.1.7 示例源码(apache.mina.example)

    在Mina 1.1.7版本中,提供的示例源码是学习和理解Mina框架工作原理及其实现各种网络协议的重要资源。这个压缩包"apache.mina.example"包含了一系列的示例项目,可以帮助开发者快速上手并深入理解Mina。 1. **Mina...

    mina客户端简单代码示例

    在本示例中,我们关注的是"Mina客户端",即如何使用Mina库创建一个简单的客户端应用。 标题中的"mina客户端简单代码示例"意味着我们将探讨如何使用Mina框架编写一个基础的客户端程序,该程序能够连接到服务器并发送...

    mina服务器简单代码示例

    本示例将介绍如何使用Mina实现一个简单的服务器端代码,并运行MinaTimeServer。 在Java中,Mina提供了一种事件驱动、异步编程模型,使得开发者可以更高效地处理网络通信。其核心组件包括Acceptor(监听器)、...

    Mina客户端示例

    Apache Mina是一个高度可扩展的网络通信框架,它为Java应用程序提供了简单的API来处理TCP/IP、UDP和其他协议的网络通信。在这个"Mina客户端示例"中,我们主要关注如何利用Mina框架构建一个客户端,以及其中涉及到的...

    apache mina socket实例

    mina简单示例,Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(当然,也可以提供JAVA 对象的序列化服务、虚拟机管道通信服务等),Mina 可以帮助我们快速...

    MINA—TCP案例

    在本案例中,我们将聚焦于MINA如何应用于TCP连接,创建一个简单的客户端。 TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议,确保数据的有序、无损传输。MINA作为一款开源框架,为开发者...

    MINA 2.0.7 官方示例

    这个例子展示了如何创建一个简单的服务器和客户端,并使用MINA进行数据传输。 2. **ChatDemo**:聊天室示例,允许多个客户端连接并相互发送消息。此示例演示了MINA如何处理多用户并发场景。 3. **AsyncEchoDemo**...

    mina简单通信需要的包

    标题中的“mina简单通信需要的包”指的是Apache Mina框架,这是一个用于构建高性能、异步网络应用程序的Java框架。在本文中,我们将深入探讨Mina的核心概念和它在通信中的应用,以及与之相关的库SLF4J。 Apache ...

    Mina通信框架应用示例

    2. Mina简单入门 开发MINA应用通常涉及以下步骤: - 下载MINA库:访问官网http://mina.apache.org/获取最新版本的MINA库。 - 创建项目:在IDE中创建新项目,并将MINA核心库mina-core添加至项目依赖。 - 编写...

    Mina简单小例

    标题"Mina简单小例"可能是指Apache Mina框架的一个简单示例。Apache Mina是一个用Java编写的网络通信框架,它简化了创建高性能、高可用性的网络应用。在这个例子中,我们可能会看到如何使用Mina来建立服务器和客户端...

    mina 实现简单通讯

    总结来说,这个"mina 实现简单通讯"项目展示了一个基于Apache MINA的网络通信示例,涵盖了服务端和客户端的创建、自定义的协议编解码器、以及必要的网络配置。这为学习和理解MINA框架提供了一个基础平台,并且可以在...

    Apache Mina简单实例

    通过阅读和实践这个简单的Apache Mina示例,你可以了解其基本的工作原理,进一步深入学习,将有助于构建高效、可扩展的网络服务。此外,标签中的“源码”提示我们,可以查看Apache Mina的源代码来学习其内部实现,这...

    一般Socket客户端与Mina NIO Socket客户端对比示例

    3. 开发复杂度:Mina NIO需要对Java NIO有深入理解,而普通Socket相对简单,学习曲线较平缓。 4. 扩展性:Mina提供了丰富的功能,如协议编码解码、事件驱动模型等,使其更容易扩展和维护。 5. 社区支持:Mina作为一...

    Mina自定义协议简单实现

    **Mina自定义协议简单实现** Apache Mina(Minimum Asynchronous Network)是一个开源的网络通信框架,它为Java开发者提供了一种高效、灵活且可扩展的框架,用于构建高性能的网络应用程序,如服务器和客户端应用。...

    Mina 实例 包含jar包

    在这个"Mina实例 包含jar包"的压缩包中,我们预计会找到运行Mina示例所需的所有依赖库。 Mina的核心设计思想是提供一个可扩展的框架,允许开发者创建各种类型的网络服务,如TCP/IP协议的应用(如HTTP、FTP)、UDP...

    Mina+Socket通信

    Mina(全称“MINA: Minimalistic Application Networking API”)是Apache软件基金会的一个开源项目,它为开发者提供了一种简单而高效的方式来构建高性能、跨平台的网络应用。Mina的核心优势在于它的事件驱动和异步I...

    基于MINA构建简单高性能的NIO应用.pdf

    "基于MINA构建简单高性能的NIO应用.pdf" 这个标题指出,文档主要讨论如何使用MINA框架来构建一个基于非阻塞I/O (Non-blocking I/O, NIO) 的应用程序。MINA是一个开源的Java框架,专为网络通信设计,特别是高性能、高...

    mina

    1. **基于MINA框架快速开发网络应用程序(转载).html**:这可能是一个教程或指南,教读者如何利用MINA快速构建网络应用,可能包含基本概念、设置步骤和简单示例。 2. **Apache_Mina_Server_2.0中文参考手册V1.0.pdf*...

Global site tag (gtag.js) - Google Analytics