`

mina 学习笔记一

    博客分类:
  • java
阅读更多

mina下载路径
http://mina.apache.org/downloads.html
apache-mina-2.0.7-bin


传送字符串的简单c/s


所需jar包
mina-core-2.0.7.jar
slf4j-api-1.5.8.jar
slf4j-nop-1.5.8.jar




服务器端
示例代码如下
/**
* mina服务器端
*
* 启动服务器的主类
*
* @time 下午3:17:08
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public class MinaServer {


/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// 创建一个非阻塞的sserver端socket
SocketAcceptor acceptor = new NioSocketAcceptor();
// 创建接收数据的过滤器
DefaultIoFilterChainBuilder chainBuilder =


acceptor.getFilterChain();
// 过滤器读取数据
chainBuilder.addLast("myChain", new ProtocolCodecFilter


(new TextLineCodecFactory()));
// 设定服务器端的消息处理器
acceptor.setHandler(new SampleMinaServerHandler());
int bindPort = 9988;
// 服务器端邦定的端口
acceptor.bind(new InetSocketAddress(bindPort));


System.out.println("minaServer is starting!" + bindPort);
}
}


/**
* 消息处理器
*
* @time 下午3:18:57
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public class SampleMinaServerHandler extends IoHandlerAdapter {
private int count = 0;


/**
* 客户端连接成功
*/
@Override
public void sessionOpened(IoSession session) throws Exception {
System.out.println("incomming client:" +


session.getRemoteAddress());
}


/**
* 客户端关闭联接
*/
@Override
public void sessionClosed(IoSession session) throws Exception {
System.out.println("one client disconnect!");
}


/**
* 接收到客户端发送的消息
*/
@Override
public void messageReceived(IoSession session, Object message)


throws Exception {
String msg = (String) message;
System.out.println("接收到客户端消息:" + msg);
// 回送消息给客户端
session.write(msg + count);
count++;
}


}






测试服务器端程序


命令行模式:
telnet localhost 9988
helloworld


服务器端信息
minaServer is starting!9988
incomming client:/127.0.0.1:31185
接收到客户端消息:hello world




代码实现客户端程序
/**
* mina客户端
*
* @time 下午4:04:27
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public class MinaClient {


/**
* @param args
*/
public static void main(String[] args) {
//
NioSocketConnector connector = new NioSocketConnector();
// 创建过滤器
DefaultIoFilterChainBuilder chain =


connector.getFilterChain();
// 设置过滤器读取数据方式
chain.addLast("myChain", new ProtocolCodecFilter(new


TextLineCodecFactory()));


// 设置客户端的消息处理器
connector.setHandler(new SampleMinaServerHandler());
// 设置超时时间
connector.setConnectTimeout(3000);
// 连接到服务器
ConnectFuture future = connector.connect(new


InetSocketAddress("localhost", 9988));
future.awaitUninterruptibly();
future.getSession().getCloseFuture().awaitUninterruptibly


();
connector.dispose();
}


}




/**
* 客户端消息处理器
*
* @time 下午3:18:57
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public class SampleMinaServerHandler extends IoHandlerAdapter {
private int count = 0;


/**
* 客户端连接成功
*/
@Override
public void sessionOpened(IoSession session) throws Exception {
System.out.println("incomming client:" +


session.getRemoteAddress());
session.write("client ====come on !");
}


/**
* 客户端关闭联接
*/
@Override
public void sessionClosed(IoSession session) throws Exception {
System.out.println("client ====one client disconnect!");
}


/**
* 接收到客户端发送的消息
*/
@Override
public void messageReceived(IoSession session, Object message)


throws Exception {
String msg = (String) message;
System.out.println("接收到服务器端消息:" + msg);
// 回送消息给客户端
session.write(msg + count);
count++;
}


}

分享到:
评论

相关推荐

    Mina学习笔记

    Apache Mina是一个基于Java的网络通信框架,专为高性能、高可用性和可扩展性而设计。...在深入学习Mina的过程中,理解IoService及其子类的工作原理,以及如何结合IoHandler实现业务逻辑,对于掌握Mina框架至关重要。

    MIna2.0学习笔记

    1. **下载使用的Jar包**:在开始Mina2.0的学习之前,你需要从Apache官网或其他可靠的源下载Mina的最新版本库。通常,这包括核心库和其他依赖库,如slf4j用于日志记录。 2. **工程创建配置**:创建一个新的Java项目...

    Apache Mina Server 2.0中文参考手册V1.0,Apache Mina2.0学习笔记(修订版)

    Apache Mina Server 2.0中文参考手册V1.0,Apache Mina2.0学习笔记(修订版)Apache Mina Server 2.0中文参考手册V1.0,Apache Mina2.0学习笔记(修订版)

    mina学习笔记,记录所有API

    在MINA的学习笔记中,记录的所有API通常会包括以下几个核心部分: 1. **IoSession**: 这是MINA的核心接口,代表了客户端和服务器之间的连接。IoSession提供了读写数据、管理连接状态、获取会话属性等功能。例如,`...

    Mina2.0学习笔记(修订版).

    Apache Mina是一个高性能、事件驱动的网络应用框架,主要用于简化开发服务器端的复杂性,尤其在处理TCP/IP、UDP和SSL/TLS等协议时。它提供了丰富的API和工具,使得开发者能够快速构建网络应用程序,如FTP、SMTP、...

    Mina2.0学习笔记(完整版).doc

    Apache Mina是一个强大的开源框架,专门用于构建高性能、高可扩展性的网络应用程序。Mina2.0是其一个重要的版本,提供了许多改进和新特性,使得开发者能够更轻松地处理网络通信任务,尤其是在Java NIO(Non-blocking...

    Mina 学习笔记(入门)

    **Mina 学习笔记(入门)** Apache Mina 是一个高度可扩展的网络通信框架,主要用于构建高性能、高效率的服务器端应用。它提供了一种简单的方式来处理网络协议,如TCP/IP和UDP/IP,以及SSL/TLS加密的连接。在本学习...

    apache mina 学习笔记三(子项目FtpServer)

    在本学习笔记中,我们将专注于MINA的子项目——FtpServer,它是实现FTP服务器功能的一个模块。 FTP(File Transfer Protocol)是一种广泛使用的互联网协议,用于在不同主机之间传输文件。Apache MINA FtpServer提供...

    Apache mina2学习笔记DEMO

    在这个"Apache MINA2学习笔记DEMO"中,我们很可能会看到如何使用MINA来创建一个自定义协议的示例。自定义协议通常是为了满足特定应用的需求,例如高效的数据传输、安全性或者特定的编码格式。MINA允许开发者定义自己...

    MINA学习笔记(仅供参考)

    ### MINA学习笔记 #### MINA概述 MINA是一个用Java编写的高性能、轻量级的网络通信框架,主要用于简化网络编程的复杂性。它支持多种传输协议(如TCP/IP和UDP/IP),并且提供了一套丰富的API来处理网络通信相关的...

    mina学习笔记

    《mina学习笔记》 Apache MINA(Multipurpose Infrastructure for Network Applications)是一个开源框架,主要设计用于简化网络应用程序的开发,尤其是TCP和UDP协议的应用。MINA 提供了一种与网络协议无关的API,...

    Apache_Mina2.0学习笔记

    最近使用Mina开发一个Java的NIO服务端程序,因此也特意学习了Apache的这个Mina框架。 引言 1 一. Mina入门 2 第一步.下载使用的Jar包 2 第二步.工程创建配置 2 第三步.服务端程序 3 第四步.客户端程序 6 第五步.长...

    Mina学习笔记(修订版)

    MINA 是一个网络应用框架,有助于用户非常方便地开发高性能、高伸缩性的网络应用。 此文档80多页,是方便Mina上手的文档。

Global site tag (gtag.js) - Google Analytics