开发者社区> jieforest> 正文

Apache Mina开发手册之三

简介: Apache Mina开发手册之三 2、Mina服务器的架构 Mina服务器的架构图如下所示: 1)IOAcceptor即I/O接收器,负责监听网络连接和发过来的数据包。
+关注继续查看

Apache Mina开发手册之三

2、Mina服务器的架构

Mina服务器的架构图如下所示:

1)IOAcceptor即I/O接收器,负责监听网络连接和发过来的数据包。
2)对于任一新连接,会创建一个新会话,随后所有从该IP地址:端口发送过来的请求都会由该会话进行处理。
3)会话接收到的所有包,都会通过整个过滤器链的处理。过滤器可用于修改包的内容(比如转换对象,添加/删除信息等),把原始的字节转换成高级对象,反之亦然,以及包编解码器PacketEncoder和PacketDecoder等都是相当有用的。
4)最后包通过IOHandler句柄处理或转换,以满足业务的需求。

3、基于Mina的客户端架构

Mina客户端需要连接到服务器,发送消息并处理响应,它的架构图如下所示:

1)客户端首先创建IOConnector连接器(Mina为Socket连接构建的),启动时与服务器绑定。
2)一旦连接建立,会创建会话,并与连接相关联。
3)应用程序或客户端向会话写入数据,使得数据被发送到服务器,而后通过过滤器链。
4)从服务器收到的响应或消息也会遍历整个过滤器链,到达IOHandler句柄,进行处理。

六、创建Mina客户端

下面我们编写一个求和运算的客户端为例。

可见,要构建Mina客户端,我们需要完成以下步骤:
1)创建连接器
2)创建过滤器链
3)创建IOHandler句柄,并添加到连接器
4)绑定到服务器

下面详细说明。

1、创建连接器

NioSocketConnector connector = new NioSocketConnector();

2、创建过滤器链
if(USE_CUSTOM_CODEC){
	connector.getFilterChain().addLast("codec", 
		new ProtocolCodecFilter(new SumUpProtocolCodecFactory(false)));
} else{
	connector.getFilterChain().addLast("codec", 
		new ProtocolCodecFilter(new ObjectSerializationCodecFactory()));
}

3、创建IOHandler句柄
connector.setHandler(new ClientSessionHandler(values));

4、绑定到服务器
IoSession session;


for (;;) {
    try {
        ConnectFuture future = connector.connect(new InetSocketAddress(HOSTNAME, PORT));
        future.awaitUninterruptibly();
        session = future.getSession();
        break;
    } catch (RuntimeIoException e) {
        System.err.println("Failed to connect.");
        e.printStackTrace();
        Thread.sleep(5000);
    }
}

我们连接到服务器,由于连接是异步任务,故我们使用ConnectFuture类,它可以知道连接什么时候完成。一旦连接完成了,我们就可以获得相关的IoSession会话。
要发送消息到服务器,我们必须向会话写入消息数据。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Apache Mina开发手册之四
Apache Mina开发手册之四 一、Mina开发的主要步骤 1、创建一个实现了IoService接口的类 IoService接口有两个子接口: 1)IoAcceptor接口,用于服务器 2)IoConnection接口,用于客户端 ...
858 0
Apache Mina开发手册之四
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/40544275 Apache Mina开发手册之四 作者:chszs,转载需注明。
788 0
Apache Mina开发手册之三
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/39617969 Apache Mina开发手册之三 作者:chszs,转载需注明。
854 0
Apache Mina开发手册之二
Apache Mina开发手册之二 四、NIO概述 NIO API是Java 1.4版引入的,NIO的意思是非阻塞的I/O通信。 要知道Mina的NIO是基于NIO-1开发的,而在JDK 7中引入了NIO-2的库,但Mina还没有从NIO-2中获得各方面的提升,因此Mina还是基于NIO-1的。
1044 0
Apache Mina开发手册之二
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/39550367 Apache Mina开发手册之二 作者:chszs,转载需注明。
837 0
Apache Mina开发手册
Apache Mina开发手册 一、介绍 Apache Mina是一个网络应用框架,简化用户开发高性能、高可扩展性的网络应用程序的难度。Mina提供了一个抽象的事件驱动的异步API,通过Java NIO实现各种传输协议如TCP/IP和UDP/IP。
1205 0
Apache Mina开发手册
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/39525717 Apache Mina开发手册 作者:chszs,转载需注明。
1096 0
Apache Flink 1.16 功能解读
在本次分享中,将介绍一下 Flink 1.16 的整体情况;然后我们将从三个方面(更稳定易用高性能的 Flink 批处理;持续领先的 Flink 流处理;蓬勃发展的 Flink 生态。)来深入讲解 Flink 1.16 在流批一体的大方向上所做的改进。
555 0
《Apache Flink 必知必会》电子版地址
本书不仅有PMC 及 Committer 坐阵,全方位解析 Flink 底层架构、核心功能模块、社区生态等,知其然更知其所以然,还能带你手把手实操演示,轻松掌握 Flink 应用场景与功能实现的生产开发技能!零基础上手实战,7天轻松学会 Flink~
33 0
《Apache Flink 案例集(2022版)》电子版地址
希望通过本手册,可以让大家了解到大量来自不同领域的公司在数据集成、数据分析、人工智能、云原生以及企业数字化转型等应用场景中使用 Apache Flink 解决实际生产问题的成功案例,其中既包含传统和新兴的互联网公司,也包含通信、证券、银行等传统企业。
28 0
+关注
jieforest
原ChinaUnix博客专家,见:http://blog.chinaunix.net/uid/301743.html
文章
问答
文章排行榜
最热
最新
相关电子书
更多
贺小令|Apache Flink 1.16 简介
立即下载
Apache Dubbo3 源码深入解读
立即下载
Apache Dubbo 微服务开发从入门到精通
立即下载