1.SERVER端程序和配置
程序 MinaServer.java:
package com.sillycat.manager.impl;
import java.net.InetSocketAddress;
import org.apache.mina.common.IoAcceptor;
import org.apache.mina.filter.LoggingFilter;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
import org.apache.mina.transport.socket.nio.SocketAcceptor;
import org.apache.mina.transport.socket.nio.SocketAcceptorConfig;
public class MinaServer {
private static final int SERVER_PORT = 8080;
public static void main( String[] args ) throws Throwable
{
IoAcceptor acceptor = new SocketAcceptor();
// Prepare the service configuration.
SocketAcceptorConfig cfg = new SocketAcceptorConfig();
cfg.setReuseAddress( true );
cfg.getFilterChain().addLast(
"codec",
new ProtocolCodecFilter( new ObjectSerializationCodecFactory() ) );
cfg.getFilterChain().addLast( "logger", new LoggingFilter() );
acceptor.bind(
new InetSocketAddress( SERVER_PORT ),
new MinaServerSessionHandler( ), cfg );
System.out.println( "The server Listening on port " + SERVER_PORT );
}
}
SERVER端的处理类MinaServerSessionHandler.java:
package com.sillycat.manager.impl;
import org.apache.mina.common.IdleStatus;
import org.apache.mina.common.IoHandlerAdapter;
import org.apache.mina.common.IoSession;
import org.apache.mina.util.SessionLog;
import com.sillycat.model.Message;
public class MinaServerSessionHandler extends IoHandlerAdapter {
public void sessionOpened(IoSession session) {
// set idle time to 60 seconds
session.setIdleTime(IdleStatus.BOTH_IDLE, 60);
session.setAttribute("times", new Integer(0));
}
public void messageReceived(IoSession session, Object message) {
System.out.println("in messageReceived");
int times = ((Integer) (session.getAttribute("times"))).intValue();
System.out.println("tiems = " + times);
// communicate 30 times,then close the session.
if (times < 1) {
times++;
session.setAttribute("times", new Integer(times));
Message msg;
msg = (Message) message;
msg.setMsgBody("in server side: " + msg.getMsgBody());
System.out.println("begin send msg: " + msg.getMsgBody());
session.write(msg);
} else {
session.close();
}
}
public void sessionIdle(IoSession session, IdleStatus status) {
SessionLog.info(session, "Disconnecting the idle.");
// disconnect an idle client
session.close();
}
public void exceptionCaught(IoSession session, Throwable cause) {
// close the connection on exceptional situation
session.close();
}
}
2.CLIENT的程序和配置
CLIENT类MinaClient.java:
package com.sillycat.manager.impl;
import java.net.InetSocketAddress;
import org.apache.mina.common.IoSession;
import org.apache.mina.filter.LoggingFilter;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
import org.apache.mina.transport.socket.nio.SocketConnector;
import org.apache.mina.transport.socket.nio.SocketConnectorConfig;
import com.sillycat.model.Message;
public class MinaClient {
private static final String HOSTNAME = "localhost";
private static final int PORT = 8080;
private static final int CONNECT_TIMEOUT = 30; // seconds
public static void main( String[] args ) throws Throwable
{
SocketConnector connector = new SocketConnector();
// Configure the service.
SocketConnectorConfig cfg = new SocketConnectorConfig();
cfg.setConnectTimeout( CONNECT_TIMEOUT );
cfg.getFilterChain().addLast(
"codec",
new ProtocolCodecFilter( new ObjectSerializationCodecFactory() ) );
cfg.getFilterChain().addLast( "logger", new LoggingFilter() );
IoSession session;
Message msg = new Message(0,1,"hello");
connector.connect(new InetSocketAddress( HOSTNAME, PORT ),
new MinaClientSessionHandler(msg), cfg );
}
}
CLIENT的实现类MinaClientSessionHandler.java:
package com.sillycat.manager.impl;
import org.apache.mina.common.IoHandlerAdapter;
import org.apache.mina.common.IoSession;
import org.apache.mina.util.SessionLog;
import com.sillycat.model.Message;
public class MinaClientSessionHandler extends IoHandlerAdapter {
private Object msg;
public MinaClientSessionHandler(Object msg) {
this.msg = msg;
}
public void sessionOpened(IoSession session) {
session.write(this.msg);
}
public void messageReceived(IoSession session, Object message) {
System.out.println("in messageReceived!");
Message rm = (Message) message;
SessionLog.debug(session, rm.getMsgBody());
System.out.println("message is: " + rm.getMsgBody());
session.write(rm);
}
public void exceptionCaught(IoSession session, Throwable cause) {
session.close();
}
}
分享到:
相关推荐
在本示例中,我们关注的是"Mina客户端",即如何使用Mina库创建一个简单的客户端应用。 标题中的"mina客户端简单代码示例"意味着我们将探讨如何使用Mina框架编写一个基础的客户端程序,该程序能够连接到服务器并发送...
标题中的"mina简单示例"指的是使用Apache Mina框架构建一个简单的客户端和服务端的程序。在Java开发中,Mina提供了一种高效的方式来处理网络连接和数据传输,特别适合于构建大型、复杂的网络服务。 描述中的"mina...
在"apache mina 简单示例"中,我们通常会涉及以下几个关键概念: 1. **项目设置**:首先,你需要在你的开发环境中集成Apache Mina库。这可以通过在Maven或Gradle的依赖管理中添加Mina的相关依赖来实现。例如,在...
在Mina 1.1.7版本中,提供的示例源码是学习和理解Mina框架工作原理及其实现各种网络协议的重要资源。这个压缩包"apache.mina.example"包含了一系列的示例项目,可以帮助开发者快速上手并深入理解Mina。 1. **Mina...
在这个"Mina实例 包含jar包"的压缩包中,我们预计会找到运行Mina示例所需的所有依赖库。 Mina的核心设计思想是提供一个可扩展的框架,允许开发者创建各种类型的网络服务,如TCP/IP协议的应用(如HTTP、FTP)、UDP...
在"JavaMinaProject"这个压缩包文件中,可能包含了完整的MINA示例项目的源代码,包括项目的结构、配置文件、处理器类、过滤器类以及其他相关的Java类。通过研究这些源代码,读者可以更直观地了解MINA框架的使用方法...
在实际项目中,为了运行Mina示例,我们需要以下组件: 1. `.classpath`:这是Eclipse项目类路径的配置文件,包含了项目的依赖库。 2. `.project`:这是Eclipse项目的配置文件,定义了项目类型、构建路径等信息。 3. ...
**mina项目示例** 在Java开发中,网络通信是一个重要的组成部分,尤其是在构建分布式系统和实时应用时。Apache MINA(Multipurpose Infrastructure for Network Applications)是一个高性能、异步事件驱动的网络...
在标题和描述中提到的“mina传输对象的示例”指的是如何在Mina框架下处理和传输自定义的数据对象。Mina允许开发者通过事件驱动和异步I/O模型来高效地构建网络服务。 Mina的核心组件包括: 1. **Session**: 表示...
最近使用Mina开发一个Java的NIO服务端程序,因此也特意学习了Apache的这个Mina框架。 首先,Mina是个什么东西?看下官方网站(http://mina.apache.org/)对它的解释: Apache的Mina(Multipurpose Infrastructure ...
在"压缩包子文件的文件名称列表"中,我们看到只有一个名为"mina demo"的文件,这很可能是一个包含整个MINA示例项目的目录。这个目录可能包括以下部分: 1. **源码**:Java源代码文件,展示了如何使用MINA框架来建立...
mina编解码示例是基于Apache Mina框架的一个实践项目,主要展示了如何在Mina中进行数据的编码和解码操作。Apache Mina是一个高度可扩展的网络通信框架,广泛应用于开发高性能、高并发的网络应用程序,如TCP/IP和UDP...
Mina基础示例 Mina,全称是Java Mina框架,是一个开源的网络通信应用框架,主要用于构建高性能、高可用性的网络服务器。Mina旨在简化网络编程,它提供了高级抽象,如事件驱动和异步I/O,使得开发者能够专注于业务...
为了运行 MINA 示例,开发者需要确保以下环境准备: - 安装并配置了 JDK 1.5 或更高版本。 - 下载并包含 MINA 的核心库(mina-core)和其依赖的 SLF4J 日志库。 - 可选的集成开发环境,如 Eclipse 或 NetBeans,以...
在标题“Mina test实例一个”中,我们看到的是一个实际运用 Mina 框架的示例项目,它已经经过测试,可以供开发者参考和学习。这个实例可能是为了展示如何在实际环境中设置和使用 Mina 来实现长连接。 长连接是网络...
通过本资源包中的Mina示例代码,开发者可以学习如何创建服务器端和客户端,如何设置过滤器链,以及如何处理网络事件。同时,还可以了解如何调试和优化Mina应用,以适应不同的性能需求。 总的来说,Mina作为一款成熟...
这些文件可能是Mina示例代码、日志文件或是关于Mina的文档资料。通过阅读和分析这些文件,可以进一步加深对Mina的理解,包括它的API使用、最佳实践和常见问题解决方案。 总之,Apache Mina是一个强大而灵活的框架,...
在这个"Mina服务端客户端示例程序"中,我们可能找到了一系列用于展示如何使用Mina框架搭建服务端和客户端的代码示例。下面我们将深入探讨Mina的核心概念以及如何通过这些示例进行学习和实践。 1. **非阻塞I/O**:...
通过阅读和实践这个简单的Apache Mina示例,你可以了解其基本的工作原理,进一步深入学习,将有助于构建高效、可扩展的网络服务。此外,标签中的“源码”提示我们,可以查看Apache Mina的源代码来学习其内部实现,这...
在2.0.7版本中,官方提供了一系列示例来帮助开发者理解和使用MINA框架。 首先,MINA的核心概念是“Session”和“Filter”。Session代表了网络连接,是MINA中处理I/O事件的基础。而Filter则类似于拦截器,用于处理在...