第六章 Transports 传输协议
6.1 APR传输协议
6.11 简介
APR( Apache Portable Runtime)提供优越的可伸缩性,高性能且更好的与本地服务集成的计算。MINA支持APR传输协议。在这一章节中,我们将了解一下如何通过MINA使用APR传输协议。我们以一个时间服务器的示例来做说明。
6.1.2 先决条件
APR传输协议依赖如下组件:
(1)APR依赖包:根据平台选择合适的依赖包下载并安装,下载地址为:http://www.apache.org/dist/tomcat/tomcat-connectors/native/
(2)JNI包装器(tomcat-apr-5.5.23.jar)这个jar已包含在MINA的发布版中(MINA根目录的lib文件夹中)
(3)将本地依赖库加入PATH环境变量中
6.1.3 使用APR传输协议
完整代码参见:Time Server
基于非阻塞传输协议的时间服务器实现代码如下:
IoAcceptor acceptor =new NioSocketAcceptor();
acceptor.getFilterChain().addLast("logger",new LoggingFilter());
acceptor.getFilterChain().addLast("codec",new ProtocolCodecFilter(new TextLineCodecFactory( Charset.forName("UTF-8"))));
acceptor.setHandler( new TimeServerHandler());
acceptor.getSessionConfig().setReadBufferSize(2048);
acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE,10);
acceptor.bind(new InetSocketAddress(PORT));
使用APR传输协议的实现代码如下:
IoAcceptor acceptor =new AprSocketAcceptor();
acceptor.getFilterChain().addLast("logger",new LoggingFilter());
acceptor.getFilterChain().addLast("codec",new ProtocolCodecFilter(new TextLineCodecFactory( Charset.forName("UTF-8"))));
acceptor.setHandler( new TimeServerHandler());
acceptor.getSessionConfig().setReadBufferSize(2048);
acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE,10);
acceptor.bind(new InetSocketAddress(PORT));
我们仅是将NioSocketAcceptor 改为 AprSocketAcceptor就完成了将时间服务器使用APR传输协议的实现。
服务完成时的处理过程也是一样的。
6.2 串行传输协议
通过使用MINA,你可以像连接一个TCP/IP端口一样连接一个序列号端口。
6.2.1 获取MINA
你可以下载MINA最新的构建版本(2.0.2)。
如果你喜欢构建从trunk获取的代码,并且需要帮助,请参照开发者指南。
6.2.2 先决条件
(1)实用信息
在你通过java程序访问一个串行端口前,你需要一个本地依赖包(.dll或.so文件,这取决于你的操作系统)。MINA使用的是来自RXTX.org的包,下载地址为:ftp://ftp.qbang.org/pub/rxtx/rxtx-2.1-7-bins-r2.zip.
只需要将good.dll或.so文件放到你的JDK或JRE的jre/lib/i386/文件夹下,或者使用-Djava.library.path参数来定位你的本地依赖包。
mina-transport-serial.jar没有包含被包含在发布版中,你可以从这里下载:http://repo1.maven.org/maven2/org/apache/mina/mina-transport-serial/2.0.2/
6.2.3 连接到一个串行端口
由于通信媒体的点到点的性质,MINA提供的用来实现串行通信的仅有一个IoConnector。
此时,我们假定你应该已经读过了MINA的教程。
现在我们需要一个SerialConnector来连接到一个串行的端口。
// create your connector
IoConnector connector =new SerialConnector()
connector.setHandler(...此处是用来处理你的业务逻辑的 IoHandler ...);
SerialConnector也没有什么特别的。
让我们来创建一个地址用来连接我们的串行端口。
SerialAddress portAddress=new SerialAddress("/dev/ttyS0",38400,8, StopBits.BITS_1, Parity.NONE, FlowControl.NONE);
这里的第一个参数是你的端口标示符,对于Windows电脑,串行的端口被称作"COM1", "COM2",等等。对于Linux和一些其他的Unix,则被称为"/dev/ttyS0", "/dev/ttyS1", "/dev/ttyUSB0".
其余的参数依赖于你所驱动的设备以及其支持的通信特性。
(1)传输速率
(2)数据位
(3)奇偶校验位
(4)流控制机制
一旦创建完成,连接器就可以连接到这个地址了。
ConnectFuture future = connector.connect( portAddress );
future.await();
IoSession sessin = future.getSession();
就是这样,其他的和之前的例子一样,你可以添加你的过滤器和编码器。了解更多RS232的信息可参考:http://en.wikipedia.org/wiki/RS232s
相关推荐
Mina学习笔记。作者:李少华
mina学习笔记,记录所有API,mina学习笔记,记录所有API
Apache Mina Server 2.0中文参考手册V1.0,Apache Mina2.0学习笔记(修订版)Apache Mina Server 2.0中文参考手册V1.0,Apache Mina2.0学习笔记(修订版)
mina2学习笔记
NULL 博文链接:https://tangmingjie2009.iteye.com/blog/2036903
真的是学习MIna很好的资源,找了好久才找到的,看了很多相关的知识书籍,这本书真的不错。
这是一个关于mina框架非常全的自学文档
Apache的Mina(Multipurpose Infrastructure Networked Applications)是一个网络应用框架,可以帮助...它提供了一个抽象的、事件驱动的异步API,使Java NIO在各种传输协议(如TCP/IP,UDP/IP协议等)下快速高效开发。
mina学习资料 包含Mina学习笔记 Mina2.0快速入门与源码剖析 Apache_Mina_Server_2.0中文参考手册V1.0 我本人推荐新手可以看Mina学习笔记里面有实例!很适合新手
这个是我学的apache mina2.0学习笔记的实例
最近使用Mina开发一个Java的NIO服务端程序,因此也特意学习了Apache的这个Mina框架。 引言 1 一. Mina入门 2 第一步.下载使用的Jar包 2 第二步.工程创建配置 2 第三步.服务端程序 3 第四步.客户端程序 6 第五步.长...
Mina2.0学习笔记(修订版) 文档中附带大量实现的源码
MINA使用详解,MINA的工作流程,及搭建一个实例!
Mina学习资料,内含多个小程序(包括:移动收发短信,Mina服务器端代码,Mina客户端代码)
MINA 是一个网络应用框架,有助于用户非常方便地开发高性能、高伸缩性的网络应用。 此文档80多页,是方便Mina上手的文档。
mina自定义编解码 不错的资源 ----其实不怎么样,技术就是拿出来共享的,开源。大家一起前进
实现了Mina框架简单的换行符编解码的服务器客户端通信,简单自定义协议(报头式)的即时通讯