学习socket nio 之 mina实例(1)

简介: 学习socket nio 之 mina实例(1)

1:mina之浅谈

           mina是apache基于socket nio的一套框架,可以从apache官网下载jar包和源码。试用起来非常方便,也非常强大。如果对socket nio还不是很了解的话:请看一下这两篇文章


            学习bytebuffer和socket nio实例


           这里我简单的介绍一下mina的框架:


           IoService:这个接口是网络的入口,IoAcceptor和IoConnector都实现这个接口。从名字上我们可以看得出来IoAcceptor是接受链接的(服务端),而IoConnector是用来链接的(客户端)。


           IoFilter:过滤器。他是用来过滤消息的。从IoService(网络接口)出来的数据或者进入IoService(网络接口)的数据都会经过IoFilter的处理。最重要的就是日志和解码和编码。


          IoHandler:处理器。它是链接应用和IoFilter的桥梁,是进行业务处理的,从IoFilter出来的数据会发到IoHandler中处理。

2.png

看着这张图片,就应该明白mina中的数据时怎么传输的了吧。看起来很简单的样子?

2:mina实例

目标:

    不管客户端发送什么数据到服务端,服务端口返回Hello world。

服务端实现

IoHandler:业务处理层

import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
public class ServerHandler extends IoHandlerAdapter{
  @Override
    public void exceptionCaught(IoSession session, Throwable cause) throws Exception{
    System.out.println("报错啦............");
        cause.printStackTrace();
    }
    @Override
    public void messageReceived( IoSession session, Object message ) throws Exception{
        String str = message.toString();
        System.out.println("messageReceived:"+str);
        session.write("hello world");
    }
    @Override
    public void sessionIdle( IoSession session, IdleStatus status ) throws Exception{
        System.out.println( "IDLE " + session.getIdleCount( status ));
    }
}


相关文章
|
2月前
|
关系型数据库 MySQL 数据库
docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
178 0
|
5月前
|
监控 网络协议 安全
Socket网络编程中的常见应用场景与实例分析
Socket网络编程中的常见应用场景与实例分析
|
4月前
|
Java 物联网 应用服务中间件
Socket网络编程中的常见应用场景与实例分析
Socket网络编程中的常见应用场景与实例分析
|
5月前
|
存储 监控 Java
深入探索Java BIO与NIO输入输出模型:基于文件复制和socket通信
深入探索Java BIO与NIO输入输出模型:基于文件复制和socket通信
|
5月前
|
网络协议
逆向学习网络篇:通过Socket建立连接并传输数据
逆向学习网络篇:通过Socket建立连接并传输数据
61 0
|
6月前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
|
缓存 Java API
02RPC - socket nio原理
02RPC - socket nio原理
38 0
|
网络协议 Python
【从零学习python 】72. 深入理解Socket通信及创建套接字的方法
【从零学习python 】72. 深入理解Socket通信及创建套接字的方法
73 0
|
缓存 Java
Java NIO实战篇:使用Socket实现报文交互
Java NIO实战篇:使用Socket实现报文交互
221 0
|
缓存 网络协议 Java
Java NIO学习(二):Channel通道
Java NIO 的通道类似流,但又有些不同:
167 0
Java NIO学习(二):Channel通道