`
shoushounihao
  • 浏览: 41558 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

mina框架的使用

    博客分类:
  • java
 
阅读更多

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框架使用demo"中,我们将深入探讨如何利用Mina来实现长连接,以及如何使用其提供的API,如心跳服务和自定义编解码器。 首先,长连接是网络通信中的一个关键概念,它允许客户端和服务器之间的连接保持...

    mina框架使用总结.doc

    mina 框架使用总结 mina 框架是对 Java 的 NIO 包的一个封装,简化了 NIO 程序开发的难度,封装了很多底层的细节,使开发者把精力集中到业务逻辑上来。下面是对 mina 框架使用的总结。 1. MINA 框架概述 MINA ...

    mina框架使用总结

    在MINA框架中,`NioSocketAcceptor` 是一个核心组件,它用于监听和接受来自客户端的连接请求。在提供的代码片段中,`start` 方法初始化了一个 `NioSocketAcceptor` 实例,并设置了相关的配置: 1. 线程池:`...

    Android Mina框架使用

    Mina框架允许配置不同的端口,以确保每个连接使用独立的通信通道,从而避免端口占用冲突。 5. **MinaClientDemo项目** 提供的`MinaClientDemo`示例项目可能包含了以下部分: - `MinaClient`:客户端实现,包含...

    MINA框架使用jar包(Android)

    在Android上使用MINA框架,首先需要引入相应的jar包。这里提供的jar包有log4j-1.2.14.jar,它是一个广泛使用的日志记录库,用于收集和输出应用程序运行时的信息。slf4j-android-1.6.1-RC1.jar和slf4j-api-1.7.6.jar...

    基于Android开发MINA框架使用详解

    本教程将深入探讨如何在Android项目中集成MINA框架,以及如何解决在实际开发中可能遇到的问题,如中文乱码和消息接收不全等问题。 1. **MINA框架基础** - MINA的核心是其异步事件驱动模型,它允许开发者通过回调...

    Android平台MINA框架使用详细解析

    在实际使用中,我们需要关注中文乱码问题的解决、保持Socket连接的稳定性和可靠性,以及如何在Android Studio环境中有效地整合和管理MINA框架。通过不断实践和学习,我们可以充分利用MINA的强大功能,提升Android...

    MINA框架使用总结

    阻塞和非阻塞io的简单通信程序,自己写的(写的不好)放这里做个备份 博文链接:https://javag.iteye.com/blog/221595

    Apache MINA框架相关资料

    1. **中文参考手册**(Apache_Mina_Server_2.0中文参考手册V1.0.pdf):这是一份详尽的MINA框架使用手册,用中文详细介绍了MINA的核心概念、设计模式以及如何创建服务器和客户端。它包含了各种MINA组件的用法,如...

    Java springboot 整合mina 框架,nio通讯基础教程,mina框架基础教程.zip

    总结来说,本教程将引导你从理论到实践,掌握Java NIO的基本原理,理解Mina框架的使用,以及如何在SpringBoot环境中整合Mina实现高效的网络通信。通过这些知识的学习,你将具备开发高并发、高性能网络应用的能力。

    微信小程序 Web MINA框架下载.rar

    1. **视图层(View Layer)**:MINA框架使用WXML(WeiXin Markup Language)和WXSS(WeiXin Style Sheet)作为其特有的标记语言和样式表语言,分别用于结构布局和样式设计。它们与HTML和CSS类似,但有一些特定于微信...

    MINA_框架简介适合新手

    2. 异步操作:MINA框架使用JAVA NIO作为底层支持,提供异步操作的编程模型。 3. 高性能、高扩展性:MINA框架可以帮助开发者快速开发高性能、高扩展性的网络通信应用。 MINA框架的组成部分: 1. IoAcceptor:负责...

    mina框架资源包

    《mina框架资源包详解——构建即时通讯服务器的关键组件》 Mina框架,全称为Apache Mina,是一款基于Java开发的网络通信应用框架,它提供了一种简单而高性能的方式来构建网络服务,尤其在处理TCP/IP、UDP/IP以及SSL...

    Mina框架+常用JAR包

    Mina框架是一个高性能、异步事件驱动的网络应用程序框架,主要用Java语言编写,用于简化开发TCP、UDP和SSL/TLS协议服务器和...了解并熟练掌握Mina框架的使用和JAR包管理,有助于提升Java网络应用的开发效率和质量。

    MiNA框架新人指导

    以下是一些关于如何使用MiNA框架进行开发的示例: ##### 1. 服务端演示 服务端的应用程序通常是接收来自客户端请求的服务方。在MiNA框架中,服务端的搭建相对简单,可以通过以下几个步骤实现: - **创建...

    Mina框架入门介绍

    Apache Mina 框架是一个强大的网络通信框架,它的核心目标是简化开发高效...学习和使用Mina,开发者需要具备JAVA IO、JAVA NIO、Java Socket以及并发库的基础知识,这将有助于更好地理解和应用Mina框架提供的各种功能。

    java mina框架全套

    学习和使用Mina框架,可以帮助开发者快速构建稳定、高效的网络应用,降低网络编程的复杂度,同时充分利用Java NIO的优势。在实际项目中,结合Mina与其他开源库如Spring、Hibernate等,可以构建出更加强大的企业级...

    apache mina 框架实例

    以下是对Mina框架实例、自定义协议包、编码器和解码器的详细解释: **Apache Mina框架实例:** Apache Mina框架的核心思想是基于事件驱动和非阻塞I/O,这使得它在处理大量并发连接时表现出色。在Mina中,开发者可以...

    mina 框架学习文档

    apache mina 框架的学习文档,通过此文档可以基本了解mina框架。

Global site tag (gtag.js) - Google Analytics