注: mina 使用slf4j作为日志的记录
package org.apache.mina.example.reverser;
21
22 import java.net.InetSocketAddress;
23 import java.nio.charset.Charset;
24
25 import org.apache.mina.filter.codec.ProtocolCodecFilter;
26 import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
27 import org.apache.mina.filter.logging.LoggingFilter;
28 import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
29
30 /**
31 * (<b>Entry point</b>) Reverser server which reverses all text lines from
32 * clients.
33 *
34 * @author <a href="http://mina.apache.org">Apache MINA Project</a>
35 */
36 public class Main {
37 private static final int PORT = 8080;
38
39 public static void main(String[] args) throws Exception {
40 NioSocketAcceptor acceptor = new NioSocketAcceptor();
41
42 // Prepare the configuration
43 acceptor.getFilterChain().addLast("logger", new LoggingFilter());
44 acceptor.getFilterChain().addLast(
45 "codec",
46 new ProtocolCodecFilter(new TextLineCodecFactory(Charset
47 .forName("UTF-8"))));
48
49 // Bind
50 acceptor.setHandler(new ReverseProtocolHandler());
51 acceptor.bind(new InetSocketAddress(PORT));
52
53 System.out.println("Listening on port " + PORT);
54 }
55 }
@Override 覆盖那几个方法,其实不一定用extends 用implement 能列出所有的方法
package org.apache.mina.example.reverser;
21
22 import org.apache.mina.core.service.IoHandler;
23 import org.apache.mina.core.service.IoHandlerAdapter;
24 import org.apache.mina.core.session.IoSession;
25
26 /**
27 * {@link IoHandler} implementation of reverser server protocol.
28 *
29 * @author <a href="http://mina.apache.org">Apache MINA Project</a>
30 */
31 public class ReverseProtocolHandler extends IoHandlerAdapter {
32 @Override
33 public void exceptionCaught(IoSession session, Throwable cause) {
34 // Close connection when unexpected exception is caught.
35 session.close(true);
36 }
37
38 @Override
39 public void messageReceived(IoSession session, Object message) {
40 // Reverse reveiced string
41 String str = message.toString();
42 StringBuilder buf = new StringBuilder(str.length());
43 for (int i = str.length() - 1; i >= 0; i--) {
44 buf.append(str.charAt(i));
45 }
46
47 // and write it back.
48 session.write(buf.toString()); // 写回,这样可以显示
49 }
50 }
下面是另一个例子 public class Main {
37 private static final int PORT = 8080;
38
39 public static void main(String[] args) throws Exception {
40 NioSocketAcceptor acceptor = new NioSocketAcceptor();
41
42 // Prepare the configuration
43 acceptor.getFilterChain().addLast("logger", new LoggingFilter());
44 acceptor.getFilterChain().addLast(
45 "codec",
46 new ProtocolCodecFilter(new TextLineCodecFactory(Charset
47 .forName("UTF-8"))));
48
49 // Bind
50 acceptor.setHandler(new ReverseProtocolHandler());
51 acceptor.bind(new InetSocketAddress(PORT));
52
53 System.out.println("Listening on port " + PORT);
54 }
55 }
public class ReverseProtocolHandler extends IoHandlerAdapter {
32 @Override
33 public void exceptionCaught(IoSession session, Throwable cause) {
34 // Close connection when unexpected exception is caught.
35 session.close(true);
36 }
37
38 @Override
39 public void messageReceived(IoSession session, Object message) {
40 // Reverse reveiced string
41 String str = message.toString();
42 StringBuilder buf = new StringBuilder(str.length());
43 for (int i = str.length() - 1; i >= 0; i--) {
44 buf.append(str.charAt(i));
45 }
46
47 // and write it back.
48 session.write(buf.toString());
49 }
50 }
第三个例子 server 端基本都一样
public class Main {
37 private static final int PORT = 8080;
38
39 public static void main(String[] args) throws Exception {
40 NioSocketAcceptor acceptor = new NioSocketAcceptor();
41
42 // Prepare the configuration
43 acceptor.getFilterChain().addLast("logger", new LoggingFilter());
44 acceptor.getFilterChain().addLast(
45 "codec",
46 new ProtocolCodecFilter(new TextLineCodecFactory(Charset
47 .forName("UTF-8"))));
48
49 // Bind
50 acceptor.setHandler(new ReverseProtocolHandler());
51 acceptor.bind(new InetSocketAddress(PORT));
52
53 System.out.println("Listening on port " + PORT);
54 }
55 }
public class ReverseProtocolHandler extends IoHandlerAdapter {
32 @Override
33 public void exceptionCaught(IoSession session, Throwable cause) {
34 // Close connection when unexpected exception is caught.
35 session.close(true);
36 }
37
38 @Override
39 public void messageReceived(IoSession session, Object message) {
40 // Reverse reveiced string
41 String str = message.toString();
42 StringBuilder buf = new StringBuilder(str.length());
43 for (int i = str.length() - 1; i >= 0; i--) {
44 buf.append(str.charAt(i));
45 }
46
47 // and write it back.
48 session.write(buf.toString());
49 }
50 }
分享到:
相关推荐
包含了官方例子中所有相关的jar包:log4j, mina-core, mina-integration-jmx, mina-statemachine, org.springframework.context, slf4j-api, slf4j-log4j12等
这个例子是关于如何使用Apache Mina实现一个简单的服务端和客户端通信的示例。在这个案例中,`MinaTimeServer`是服务端程序,它负责监听客户端的连接请求,并发送时间信息;而`MinaClient`则是客户端程序,它连接到...
**Mina官网例子之时间服务器** Apache Mina(Minimum Asynchronous Network)是一个高度可扩展的网络通信框架,它为各种协议提供了低级别的基础结构,包括TCP/IP和UDP/IP。Mina的目标是简化网络编程,使其变得高效...
这个"mina通讯例子"展示了如何利用MINA库来实现客户端与服务器之间的对象通信。 在MINA中,核心概念包括`Session`、`Filter`和`Handler`。`Session`代表了网络连接,它提供了读写数据的方法;`Filter`是数据处理链...
在这个“Mina服务端例子”中,我们主要探讨的是如何使用Mina框架来实现一个基于Socket的非阻塞I/O(NIO)服务端。 1. **Mina框架介绍**: Mina提供了事件驱动和异步处理模型,使得开发者可以专注于业务逻辑,而...
通过这个"mina使用例子",你可以深入理解如何使用Mina来构建一个网络应用,从创建服务端、配置过滤器链,到处理客户端的连接和数据交换,以及如何进行性能优化和异常处理。这个例子将为你提供实践Mina框架的第一手...
3. **编写简单的应用**:从例子入手,创建一个简单的MINA服务器和客户端,理解它们之间的通信机制。 4. **实现自定义过滤器**:根据需求,编写自定义的过滤器,以实现特定的数据处理功能。 5. **性能调优**:了解...
本入门例子将带你了解如何使用MINA进行基本的网络通信应用开发。 首先,MINA的核心概念包括`Session`、`Filter`和`Handler`。`Session`代表一个网络连接,它是数据传输的通道;`Filter`是处理`Session`中数据的...
在这个"Mina例子包含与Spring整合"的项目中,我们将探讨如何将MINA与流行的Java企业级框架Spring进行集成。 1. **Apache MINA**:MINA是基于Java NIO(非阻塞I/O)的网络应用框架,用于构建高性能、跨平台的服务器...
Apache MINA(Multipurpose Infrastructure for Network Applications)是一个高性能、异步事件驱动的网络应用程序框架,主要用于简化开发高质量的网络服务。MINA的目标是为开发者提供一个简单易用但功能强大的库,...
在“NIO_MINA学习例子_源代码”中,你可以找到以下学习要点: 1. **NIO基础**:研究源代码中的通道和缓冲区的使用,理解如何通过Channel.read()和Channel.write()进行数据传输,以及如何使用Selector注册和监听通道...
这个"mina权威性能测试例子"是针对Apache Mina的一个实际性能测试案例,旨在展示在特定环境下Mina如何处理大量并发连接。在这个测试中,四台客户端机器同时对服务器进行压力测试,结果显示服务器可以轻松地处理一万...
在这个“mina消息推送例子”中,我们将深入探讨Mina如何实现消息推送,并结合Spring框架进行集成。 首先,Apache Mina提供了一个异步事件驱动的网络应用编程接口(API),它简化了TCP/IP和UDP协议的处理,如HTTP、...
在这个"mina客户端例子"中,我们将探讨如何利用MINA构建一个简单的客户端,实现基于NIO(Non-blocking I/O)的游戏开发和即时通讯工具。 首先,让我们了解NIO。在Java中,传统的I/O模型是阻塞的,这意味着当进行...
**mina即时聊天demo** Mina(Java Multithreaded Application Network Architecture)是一个开源的网络通信框架,由Apache软件基金会开发并维护。它提供了一个高度可扩展的、高性能的、事件驱动的I/O服务架构,广泛...
这个例子中的链接(http://blog.csdn.net/stevexk/archive/2008/07/23/2697907.aspx)提供了更详细的实现细节,包括具体的编码和解码逻辑,以及如何在Mina的过滤器和处理器中处理RPC请求。如果你需要深入学习,建议...
NULL 博文链接:https://tianting-wx.iteye.com/blog/265080
《Mina 服务器开发实例详解》 Mina(Minimum Asynchronous Network)是一个开源的Java框架,主要用于构建高性能、...通过理解并实践上述例子,你将能够更好地掌握Mina,并在实际项目中运用它来构建高性能的网络应用。
在"Mina_MyProtocol"这个例子中,你可能会看到以下文件结构: - `MyProtocolEncoder.java`:实现了自定义编码器,将你的业务对象转化为符合自定义协议的数据流。 - `MyProtocolDecoder.java`:实现了自定义解码器,...
这些改进提升了效率,比如基于Apache APR的基础I/O组件,官方测试显示,相对于Sun NIO,APR的性能可提高约10%。因此,2.0.x版本对于开发者来说非常值得期待。 异步I/O模型是Mina的核心。在Mina中,有两种主要的异步...