Apache 的Mina(Multipurpose Infrastructure Networked Applications)
是一个网络应用框架,可以帮助用户开发高性能和高扩展性的网络应用程序;它
提供了一个抽象的、事件驱动的异步API,使Java NIO 在各种传输协议(如
TCP/IP,UDP/IP 协议等)下快速高效开发。
---建个服务端和客户端试试
1.建立个服务端
public class Demo1Server {
private static int PORT = 3005;
private static Logger logger=Logger.getLogger(Demo1Server.class);
public static void main(String[] args) {
IoAcceptor acceptor = null;
try {
acceptor = new NioSocketAcceptor();
acceptor.getFilterChain().addLast(
"codec",
new ProtocolCodecFilter(new TextLineCodecFactory(Charset
.forName("UTF-8"), LineDelimiter.WINDOWS.getValue(),
LineDelimiter.WINDOWS.getValue())));
//缓存大小
acceptor.getSessionConfig().setReadBufferSize(2048);
//空闲时间为10秒
acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE , 10);
//绑定业务数据
acceptor.setHandler(new Demo1ServerHandler());
acceptor.bind(new InetSocketAddress(PORT));
logger.info("连接服务成功");
} catch (IOException e) {
logger.error("连接出错"+e.toString());
e.printStackTrace();
}
}
这里是业务处理
package com.itcast.service.imp;
import java.util.Date;
import org.apache.log4j.Logger;
import org.apache.mina.common.IdleStatus;
import org.apache.mina.common.IoHandlerAdapter;
import org.apache.mina.common.IoSession;
/**
* cong
* @author yt
*
*/
public class Demo1ServerHandler extends IoHandlerAdapter{
private static Logger logger=Logger.getLogger(Demo1ServerHandler.class);
@Override
public void exceptionCaught(IoSession session, Throwable cause)
throws Exception {
super.exceptionCaught(session, cause);
logger.info("出错了..."+cause);
}
@Override
public void messageReceived(IoSession session, Object message)
throws Exception {
String msg=message.toString();
System.out.println(msg+" 接收消息...........");
if("bye".equals(msg))
{
session.close();
}
Date date=new Date();
session.write(date);
}
@Override
public void messageSent(IoSession session, Object message) throws Exception {
//这里设置发送消息后立即关掉服务与客户的连接
session.close();
logger.info("发送消息..........");
}
@Override
public void sessionClosed(IoSession session) throws Exception {
super.sessionClosed(session);
logger.info("服务关闭成功");
}
@Override
public void sessionCreated(IoSession session) throws Exception {
super.sessionCreated(session);
logger.info("服务与客户连接成功!");
}
@Override
public void sessionIdle(IoSession session, IdleStatus status)
throws Exception {
super.sessionIdle(session, status);
logger.info("空闲时刻......");
}
@Override
public void sessionOpened(IoSession session) throws Exception {
super.sessionOpened(session);
logger.info("服务与客户端连接打开成功!");
}
}
---客户端测试
package com.itcast.client.demo;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import org.apache.log4j.Logger;
import org.apache.mina.common.ConnectFuture;
import org.apache.mina.common.IoConnector;
import org.apache.mina.common.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.LineDelimiter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
import com.itcast.client.demo.imp.MineClentHander;
public class MineClient1Demo {
/**
* @param args
* 这里涉及到长连接和短连接..........
*/
private static Logger log = Logger.getLogger(MineClient1Demo.class);
private static int PORT = 3005;
private static String URL = "10.2.15.19";
public static void main(String[] args) {
log.info("客户端测试........");
IoConnector connector = new NioSocketConnector();// 创建连接
connector.setConnectTimeout(30000);
//过滤utf-8
connector.getFilterChain().addLast(
"codec",
new ProtocolCodecFilter(new TextLineCodecFactory(Charset
.forName("UTF-8"), LineDelimiter.WINDOWS.getValue(),
LineDelimiter.WINDOWS.getValue())));
connector.setHandler(new MineClentHander());
//业务处理
IoSession session=null;
try{
ConnectFuture fauter=connector.connect(new InetSocketAddress(URL, PORT));
fauter.awaitUninterruptibly();//等待创建连接完成
session=fauter.getSession();
session.write("君兽你是个怪兽");
}
catch(Exception ex)
{
log.error(ex.toString());
}
session.getCloseFuture().awaitUninterruptibly();//等待断开连接
connector.dispose();
}
}
--业务处理
package com.itcast.client.demo.imp;
import org.apache.log4j.Logger;
import org.apache.mina.common.IoHandlerAdapter;
import org.apache.mina.common.IoSession;
public class MineClentHander extends IoHandlerAdapter{
private static Logger log=Logger.getLogger(MineClentHander.class);
@Override
public void exceptionCaught(IoSession session, Throwable cause)
throws Exception {
log.error("客户端错误消息:"+cause);
super.exceptionCaught(session, cause);
}
@Override
public void messageReceived(IoSession session, Object message)
throws Exception {
String msg=message.toString();
log.info(msg+".........................客户端消息");
}
}
相关推荐
在这个"Mina框架使用demo"中,我们将深入探讨如何利用Mina来实现长连接,以及如何使用其提供的API,如心跳服务和自定义编解码器。 首先,长连接是网络通信中的一个关键概念,它允许客户端和服务器之间的连接保持...
mina 框架使用总结 mina 框架是对 Java 的 NIO 包的一个封装,简化了 NIO 程序开发的难度,封装了很多底层的细节,使开发者把精力集中到业务逻辑上来。下面是对 mina 框架使用的总结。 1. MINA 框架概述 MINA ...
在MINA框架中,`NioSocketAcceptor` 是一个核心组件,它用于监听和接受来自客户端的连接请求。在提供的代码片段中,`start` 方法初始化了一个 `NioSocketAcceptor` 实例,并设置了相关的配置: 1. 线程池:`...
Mina框架允许配置不同的端口,以确保每个连接使用独立的通信通道,从而避免端口占用冲突。 5. **MinaClientDemo项目** 提供的`MinaClientDemo`示例项目可能包含了以下部分: - `MinaClient`:客户端实现,包含...
在Android上使用MINA框架,首先需要引入相应的jar包。这里提供的jar包有log4j-1.2.14.jar,它是一个广泛使用的日志记录库,用于收集和输出应用程序运行时的信息。slf4j-android-1.6.1-RC1.jar和slf4j-api-1.7.6.jar...
本教程将深入探讨如何在Android项目中集成MINA框架,以及如何解决在实际开发中可能遇到的问题,如中文乱码和消息接收不全等问题。 1. **MINA框架基础** - MINA的核心是其异步事件驱动模型,它允许开发者通过回调...
在实际使用中,我们需要关注中文乱码问题的解决、保持Socket连接的稳定性和可靠性,以及如何在Android Studio环境中有效地整合和管理MINA框架。通过不断实践和学习,我们可以充分利用MINA的强大功能,提升Android...
阻塞和非阻塞io的简单通信程序,自己写的(写的不好)放这里做个备份 博文链接:https://javag.iteye.com/blog/221595
1. **中文参考手册**(Apache_Mina_Server_2.0中文参考手册V1.0.pdf):这是一份详尽的MINA框架使用手册,用中文详细介绍了MINA的核心概念、设计模式以及如何创建服务器和客户端。它包含了各种MINA组件的用法,如...
总结来说,本教程将引导你从理论到实践,掌握Java NIO的基本原理,理解Mina框架的使用,以及如何在SpringBoot环境中整合Mina实现高效的网络通信。通过这些知识的学习,你将具备开发高并发、高性能网络应用的能力。
1. **视图层(View Layer)**:MINA框架使用WXML(WeiXin Markup Language)和WXSS(WeiXin Style Sheet)作为其特有的标记语言和样式表语言,分别用于结构布局和样式设计。它们与HTML和CSS类似,但有一些特定于微信...
2. 异步操作:MINA框架使用JAVA NIO作为底层支持,提供异步操作的编程模型。 3. 高性能、高扩展性:MINA框架可以帮助开发者快速开发高性能、高扩展性的网络通信应用。 MINA框架的组成部分: 1. IoAcceptor:负责...
《mina框架资源包详解——构建即时通讯服务器的关键组件》 Mina框架,全称为Apache Mina,是一款基于Java开发的网络通信应用框架,它提供了一种简单而高性能的方式来构建网络服务,尤其在处理TCP/IP、UDP/IP以及SSL...
Mina框架是一个高性能、异步事件驱动的网络应用程序框架,主要用Java语言编写,用于简化开发TCP、UDP和SSL/TLS协议服务器和...了解并熟练掌握Mina框架的使用和JAR包管理,有助于提升Java网络应用的开发效率和质量。
以下是一些关于如何使用MiNA框架进行开发的示例: ##### 1. 服务端演示 服务端的应用程序通常是接收来自客户端请求的服务方。在MiNA框架中,服务端的搭建相对简单,可以通过以下几个步骤实现: - **创建...
Apache Mina 框架是一个强大的网络通信框架,它的核心目标是简化开发高效...学习和使用Mina,开发者需要具备JAVA IO、JAVA NIO、Java Socket以及并发库的基础知识,这将有助于更好地理解和应用Mina框架提供的各种功能。
学习和使用Mina框架,可以帮助开发者快速构建稳定、高效的网络应用,降低网络编程的复杂度,同时充分利用Java NIO的优势。在实际项目中,结合Mina与其他开源库如Spring、Hibernate等,可以构建出更加强大的企业级...
以下是对Mina框架实例、自定义协议包、编码器和解码器的详细解释: **Apache Mina框架实例:** Apache Mina框架的核心思想是基于事件驱动和非阻塞I/O,这使得它在处理大量并发连接时表现出色。在Mina中,开发者可以...
apache mina 框架的学习文档,通过此文档可以基本了解mina框架。