`
simple1024
  • 浏览: 74335 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Mina入门

    博客分类:
  • Mina
阅读更多

服务器---客户端互相响应

 

简单的小例子,理解MINA是怎么工作的。

 

需要导入的包:

mina-core-2.00-M1.jar;

log4j-over-slf4j-1.5.0.jar;

slf4j-nop-1.5.0.jar

 

 

MINA服务器端代码

 

import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;


//负责处理连接上来的客户机,即消息处理器
public class MinaServerHandler extends IoHandlerAdapter{

  //客户端发送的消息到达时
  @Override
  public void messageReceived(IoSession session, Object message) throws Exception {
    // TODO Auto-generated method stub
    String s = (String)message;
    System.out.println("来自客户端的消息:"+s);
    session.write(s);
  }
  
  //一个客户端关闭时
  @Override
  public void sessionClosed(IoSession session) throws Exception {
    // TODO Auto-generated method stub
    System.out.println("one Client Disconnect");
  }
  
  //一个客户端接入时
  @Override
  public void sessionCreated(IoSession session) throws Exception {
    // TODO Auto-generated method stub
    System.out.println("one Client Connection");
  }
  
}

 

启动服务器代码

import java.io.IOException;
import java.net.InetSocketAddress;

import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.SocketAcceptor;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;



public class StartServer {
  public static void main(String[] args) {
    //创建一个非阻塞的serever端socket,用Nio
    SocketAcceptor acceptor = new NioSocketAcceptor();
    //创建接收数据的过滤器
    DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
    //设定这个过滤器规则(将一行一行读取数据)
    chain.addLast("myChin", new ProtocolCodecFilter(new TextLineCodecFactory()));
    //设定服务器端的消息处理器:一个MinaServerHandler对象
    acceptor.setHandler(new MinaServerHandler());
    //服务器端绑定的端口
    int bindPort = 10000;
    //绑定端口,启动服务器
    try {
      acceptor.bind(new InetSocketAddress(bindPort));
    } catch(IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    System.out.println("Mina server is listing on:="+bindPort);
  }
}

 

MINA客户端代码

import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;


//Mina客户端消息处理器类
public class MinaClientHandler extends IoHandlerAdapter  {

  @Override
  public void messageReceived(IoSession session, Object message) throws Exception {
    // TODO Auto-generated method stub
    String s = (String)message;
    System.out.println("来自服务器的消息:"+s);
    session.write(s);
  }

  @Override
  public void sessionClosed(IoSession session) throws Exception {
    // TODO Auto-generated method stub
    System.out.println("服务器走了~");
  }

  @Override
  public void sessionCreated(IoSession session) throws Exception {
    // TODO Auto-generated method stub
    System.out.println("one Client Connection"+session.getRemoteAddress());
    session.write("我来了······");
  }
  
}

 

启动客户端代码

import java.net.InetSocketAddress;

import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketConnector;



public class StartClient {
  @SuppressWarnings("deprecation")
  public static void main(String[] args) {
    //create tcp/ip connector
    NioSocketConnector connector = new NioSocketConnector();
    //创建接收数据的过滤器
    DefaultIoFilterChainBuilder chain = connector.getFilterChain();
    //设定这个过滤器将一行一行读数据
    chain.addLast("myChin", new ProtocolCodecFilter(new TextLineCodecFactory()));
    connector.setHandler(new MinaClientHandler());
    connector.setConnectTimeout(30);
    //连接到服务器
    ConnectFuture cf = connector.connect(new InetSocketAddress("localhost",10000));
    //wait for the connection attempt to be finished
    cf.awaitUninterruptibly();
    cf.getSession().getCloseFuture().awaitUninterruptibly();
    connector.dispose();
  }
}

 

先启动服务器,再启动客户端,就ok了,你的电脑可以狂奔了。

 

不写客户端可用

cmd-->telnet localhost 10000

来对话

 

 

1
0
分享到:
评论
3 楼 u010552708 2013-09-12  
slf4j老报错,最后直接在浏览器里测的
2 楼 stevenjohn 2012-07-14  
tywo45 写道
您好!我刚刚接触mina,把你的程序跑起来后,不停的出现
引用
来自客户端的消息:我来了······
来自客户端的消息:我来了······
来自客户端的消息:我来了······
来自客户端的消息:我来了······
来自客户端的消息:我来了······
来自客户端的消息:我来了······
......

在哪里有循环了?




是啊,那里有循环呢,怎么循环个没完没了的?
1 楼 tywo45 2011-11-13  
您好!我刚刚接触mina,把你的程序跑起来后,不停的出现
引用
来自客户端的消息:我来了······
来自客户端的消息:我来了······
来自客户端的消息:我来了······
来自客户端的消息:我来了······
来自客户端的消息:我来了······
来自客户端的消息:我来了······
......

在哪里有循环了?

相关推荐

    Apache Mina入门(完成版)

    在“Apache Mina入门(完成版)”这份资料中,你将了解到以下关键知识点: 1. **Mina架构**:Mina的核心设计理念是事件驱动和异步通信,它采用了I/O多路复用技术,如Java NIO(非阻塞I/O),以提高服务端处理大量...

    mina入门实例

    这就是一个基础的Mina入门实例,展示了如何使用Mina进行客户端-服务器间的通信。随着深入学习,你可以了解更多的Mina特性,如心跳机制、多线程处理、会话管理等,以构建更复杂、高效的网络应用。

    Apache Mina 入门Demo

    通过深入学习和实践这个Apache Mina入门Demo,你将掌握如何利用Mina构建网络应用,并了解其核心特性和工作原理,这对于从事Java网络编程或者需要处理大规模并发连接的开发者来说是非常有价值的。

    Mina入门:mina版之HelloWorld

    **Mina入门:Mina版之HelloWorld** Apache Mina是一个开源项目,它提供了一个高度模块化、高性能的网络通信框架。Mina旨在简化网络应用的开发,支持多种传输协议,如TCP、UDP、HTTP、FTP等。在这个“Mina入门:Mina...

    mina入门例子

    本入门例子将带你了解如何使用MINA进行基本的网络通信应用开发。 首先,MINA的核心概念包括`Session`、`Filter`和`Handler`。`Session`代表一个网络连接,它是数据传输的通道;`Filter`是处理`Session`中数据的...

    ApacheMina入门(完成版)

    总之,Apache Mina为Java开发者提供了一个强大、灵活的网络通信框架,通过本文档中的"Apache Mina入门(完成版).pdf",你可以系统性地学习如何使用它来构建高效稳定的网络应用。通过实践和理解,你将能够熟练地驾驭...

    mina 入门 教程

    3. **Mina入门步骤** - **设置环境**:首先,你需要在项目中引入Mina的依赖库,通常是通过Maven或Gradle来管理。 - **创建ProtocolCodecFactory**:定义数据编码和解码的规则,以便Mina可以正确处理网络传输的数据...

    Mina入门程序

    《Mina入门程序详解》 Mina(全称Apache MINA,即Multi-purpose Infrastructure for Network Applications)是一个开源的网络通信框架,它为Java开发者提供了一种高性能、易使用的网络编程工具。Mina允许开发者创建...

    Apache Mina入门

    ### Apache Mina 入门详解 #### 一、Mina简介与应用场景 ##### Mina概述 Mina(**Mini Network Application**)是一个简洁且易于使用的Java网络应用开发框架,主要针对TCP/IP通信进行优化设计。它能够帮助开发者...

    mina入门程序

    《Mina入门程序详解》 Apache Mina是一个开源的网络通信框架,主要用于简化高效、可扩展和高性能的网络应用程序开发。Mina提供了高度抽象的网络通信API,支持TCP/IP和UDP/IP协议,常用于实现服务器端的应用,如FTP...

    Apache+Mina入门基础

    mina是一种高效的互联网网络通信架构,此资料为入门基础。

    mina2资料-各种教程

    了解以上知识点是掌握Apache MINA的基础,通过提供的学习资料,如《Mina2.0学习笔记》、《Apache MINA入门基础》和《Apache MINA Server 2.0中文参考手册》等,可以深入学习MINA的API用法、设计原理和最佳实践。...

    Mina学习笔记

    **一、Mina入门** 1. **下载使用的Jar包**: 要使用Mina,首先需要下载其发布的jar包,这些包通常包含了Mina的核心库和其他依赖库。你可以从Apache官方网站或者通过Maven仓库获取。 2. **工程创建配置**: 在...

Global site tag (gtag.js) - Google Analytics