Mina APR传输与串口传输讲解---zhengli
原文地址:Mina Transports(Apache Mina user guide Chapter6 Transport)
1.1.1.APR传输
1.1.1.1.介绍
APR (Apache Portable Runtime)Apache便携式运行时库提供卓越的可扩展性、性能和能够更好地与本地服务器技术集成。Mina支持APR传输。在这部分,我没们将在Mina的基础之上使用APR传输。我们将使用Time Server的例子。
1.1.1.2.先决条件
APR传输依赖以下组件:
APR 程序包- 从http://www.apache.org/dist/tomcat/tomcat-connectors/native/下载/安装适当的平台jar包。JNI wrapper (tomcat-apr-5.5.23.jar)发布版本自带这个包。
将本地包加入到PATH路径下。
1.1.1.3.使用APR传输
参考Time Server完整示例程序。让我们来看出基于NIO的Time Server实现是什么样的:
1
2
3
4
5
6
7
8
9
|
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传输:
1
2
3
4
5
6
7
8
9
|
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了。就是这样,现在我们的Time Server将会使用APR传输。
其他完整的流程仍然是相同的。
1.1.2.Serial传输
通过Mina2.0你可以连接到串行端口通过使用连接到Mina的TCP / IP端口。
1.1.2.1.了解Mina2.0
你可以下载最新的构建版本(目前最新的是2.0.13)。如果你喜欢从仓库构建代码,如需要帮助请查阅开发者指南。
1.1.2.2.先决条件
有用的信息:
在访问串行端口之前Java程序需要一个本地程序库(根据你的操作系统使用.DLL或.so文件)。Mina使用来自于ftp://ftp.qbang.org/pub/rxtx/rxtx-2.1-7-bins-r2.zip的RXTX.org包。
只需要将你完好的.DLL或.so文件放入你的JDK/JRE里面的jre/lib/i386/路径,或使用-Djava.library.path=定义你的本地程序包路径。
有用的信息:
mina-transport-serial.jar不包括在完整的分发包。你可以从这里下载。
1.1.2.3. 连接一个串行端口
串行通信Mina只提供一个IoConnector,由于其本身是点对点通信媒体。在这个时候,你应该已经读了Mina教程。现在连接到串行端口你需要SerialConnector:
1
2
3
|
// create your connector IoConnector connector = new SerialConnector()connector.setHandler( ... here your buisness logic IoHandler ... ); |
没有什么与SocketConnector截然不同,让我们创建一个地址连接到串行端口:
1
|
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”。
其余的参数是根据设备的驱动和所谓的通信特点。
·the baud rate·the data bits·the parity·the flow control mecanism
一旦完成,将连接器连接到地址:
1
2
3
4
5
|
ConnectFuture future = connector.connect( portAddress ); future.await(); IoSession sessin = future.getSession(); |
看吧!其他的都是像往常一样,你可以插入过滤器和编解码器。为了学习更多关于RS232的请参看:http://en.wikipedia.org/wiki/RS232
最新文章
- Objective-C 生成器模式 -- 简单实用和说明
- tyvj1198 最优矩阵连乘
- VC_MFC水波纹控件,开源
- 自定义模板语言之simple_tag和自定义过滤器
- HD1004Let the Balloon Rise
- 用urllib2实现一个下载器的思路
- append与after区别
- java求阶乘
- pdflush的工作原理
- form单选框
- tensorflow/threading 用到的一些函数
- VS开发程序用户防范安全问题
- executequery要求已打开且可用的connection,连接的当前状态为已关闭
- python学习笔记——提取网页中的信息正则表达式re
- HDU 5887 Herbs Gathering(搜索求01背包)
- Java入门系列:处理Json格式数据
- CCTargetedAction
- Oracle WebLogic Server 12c 新特性
- Jquery checkbox 遍历
- Java入门到精通——调错篇之Eclipse Java compiler level dose not match the version of the installed Java project
热门文章
- Go Flag包-命令行参数解析
- Go sync模块
- java instrumentation &;JVMTI
- MapReduce-排序(全部排序、辅助排序)
- HTTP Status 500:报错Unsupported major.minor version 51.0(unable to load class XXX)
- elasticsearch中如何手动控制全文检索结果的精准度
- js运算符、关键字、保留字、转义字符
- YII2笔记之二
- QMouseEvent 的坐标__Win
- 刻录DVD.XP系统盘(U盘)