构建一个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
分享到:
相关推荐
在"apache mina 简单示例"中,我们通常会涉及以下几个关键概念: 1. **项目设置**:首先,你需要在你的开发环境中集成Apache Mina库。这可以通过在Maven或Gradle的依赖管理中添加Mina的相关依赖来实现。例如,在...
标题中的"mina简单示例"指的是使用Apache Mina框架构建一个简单的客户端和服务端的程序。在Java开发中,Mina提供了一种高效的方式来处理网络连接和数据传输,特别适合于构建大型、复杂的网络服务。 描述中的"mina...
在Mina 1.1.7版本中,提供的示例源码是学习和理解Mina框架工作原理及其实现各种网络协议的重要资源。这个压缩包"apache.mina.example"包含了一系列的示例项目,可以帮助开发者快速上手并深入理解Mina。 1. **Mina...
在本示例中,我们关注的是"Mina客户端",即如何使用Mina库创建一个简单的客户端应用。 标题中的"mina客户端简单代码示例"意味着我们将探讨如何使用Mina框架编写一个基础的客户端程序,该程序能够连接到服务器并发送...
本示例将介绍如何使用Mina实现一个简单的服务器端代码,并运行MinaTimeServer。 在Java中,Mina提供了一种事件驱动、异步编程模型,使得开发者可以更高效地处理网络通信。其核心组件包括Acceptor(监听器)、...
Apache Mina是一个高度可扩展的网络通信框架,它为Java应用程序提供了简单的API来处理TCP/IP、UDP和其他协议的网络通信。在这个"Mina客户端示例"中,我们主要关注如何利用Mina框架构建一个客户端,以及其中涉及到的...
mina简单示例,Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(当然,也可以提供JAVA 对象的序列化服务、虚拟机管道通信服务等),Mina 可以帮助我们快速...
在本案例中,我们将聚焦于MINA如何应用于TCP连接,创建一个简单的客户端。 TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议,确保数据的有序、无损传输。MINA作为一款开源框架,为开发者...
这个例子展示了如何创建一个简单的服务器和客户端,并使用MINA进行数据传输。 2. **ChatDemo**:聊天室示例,允许多个客户端连接并相互发送消息。此示例演示了MINA如何处理多用户并发场景。 3. **AsyncEchoDemo**...
标题中的“mina简单通信需要的包”指的是Apache Mina框架,这是一个用于构建高性能、异步网络应用程序的Java框架。在本文中,我们将深入探讨Mina的核心概念和它在通信中的应用,以及与之相关的库SLF4J。 Apache ...
2. Mina简单入门 开发MINA应用通常涉及以下步骤: - 下载MINA库:访问官网http://mina.apache.org/获取最新版本的MINA库。 - 创建项目:在IDE中创建新项目,并将MINA核心库mina-core添加至项目依赖。 - 编写...
标题"Mina简单小例"可能是指Apache Mina框架的一个简单示例。Apache Mina是一个用Java编写的网络通信框架,它简化了创建高性能、高可用性的网络应用。在这个例子中,我们可能会看到如何使用Mina来建立服务器和客户端...
总结来说,这个"mina 实现简单通讯"项目展示了一个基于Apache MINA的网络通信示例,涵盖了服务端和客户端的创建、自定义的协议编解码器、以及必要的网络配置。这为学习和理解MINA框架提供了一个基础平台,并且可以在...
通过阅读和实践这个简单的Apache Mina示例,你可以了解其基本的工作原理,进一步深入学习,将有助于构建高效、可扩展的网络服务。此外,标签中的“源码”提示我们,可以查看Apache Mina的源代码来学习其内部实现,这...
3. 开发复杂度:Mina NIO需要对Java NIO有深入理解,而普通Socket相对简单,学习曲线较平缓。 4. 扩展性:Mina提供了丰富的功能,如协议编码解码、事件驱动模型等,使其更容易扩展和维护。 5. 社区支持:Mina作为一...
**Mina自定义协议简单实现** Apache Mina(Minimum Asynchronous Network)是一个开源的网络通信框架,它为Java开发者提供了一种高效、灵活且可扩展的框架,用于构建高性能的网络应用程序,如服务器和客户端应用。...
在这个"Mina实例 包含jar包"的压缩包中,我们预计会找到运行Mina示例所需的所有依赖库。 Mina的核心设计思想是提供一个可扩展的框架,允许开发者创建各种类型的网络服务,如TCP/IP协议的应用(如HTTP、FTP)、UDP...
Mina(全称“MINA: Minimalistic Application Networking API”)是Apache软件基金会的一个开源项目,它为开发者提供了一种简单而高效的方式来构建高性能、跨平台的网络应用。Mina的核心优势在于它的事件驱动和异步I...
"基于MINA构建简单高性能的NIO应用.pdf" 这个标题指出,文档主要讨论如何使用MINA框架来构建一个基于非阻塞I/O (Non-blocking I/O, NIO) 的应用程序。MINA是一个开源的Java框架,专为网络通信设计,特别是高性能、高...
1. **基于MINA框架快速开发网络应用程序(转载).html**:这可能是一个教程或指南,教读者如何利用MINA快速构建网络应用,可能包含基本概念、设置步骤和简单示例。 2. **Apache_Mina_Server_2.0中文参考手册V1.0.pdf*...