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
Mina APR传输与串口传输讲解---zhengli的更多相关文章
- ARM 开发板嵌入式linux系统与主机PC通过串口传输文件
本文转载自http://useless20.blog.163.com/blog/static/237409982010227127576/ 嵌入式linux系统与主机通过串口传输文件 我想如果要从PC ...
- SecureCRT连接开发板 串口传输、tftp传输
1.串口传输 使用命令:rx r是service, x是X-model模式 ①.rx 文件名 再按Enter键 ②.将需要传到板子上的文件 拖到SecureCRT里面,选择发送X-model选项 注 ...
- 如何使用 pyqt 读取串口传输的图像
前言 这学期选修了嵌入式系统的课程,大作业选择的题目是人脸口罩检测.由于课程提供的开发板搭载的芯片是 STM32F103ZET6,跑不动神经网络,所以打算将 OV7725 拍摄到的图像通过串口传输给上 ...
- 了解PCI Express的Posted传输与Non-Posted传输
0.写在前面 本文首发于公众号[两猿社],后续将在公众号内持续更新~ 其实算下来接触PCIe很久了,但是由于之前换工作,一直没有系统的学习和练手项目,现在新项目买了Synopsys的PCIe IP,总 ...
- USB interrupt传输和isochronous传输的区别
一直没理解USB的iso传输和interrupt传输的区别. 后来仔细看了下USB2.0 SPEC后才明白. interrupt传输和iso传输,都是等时的传输,也就是某个时间间隔发送一次. 区别在于 ...
- 【计算机网络】-传输层-Internet传输协议-TCP
[计算机网络]-传输层-Internet传输协议-TCP TCP介绍 在不可靠的互联网上提供一个可靠的端到端字节流 面向连接的.可靠的.端到端的.基于字节流的传输协议 TCP位置 TCP服务模型 应用 ...
- 串口传输文件 lrzsz
假设有一种开发环境,一块板子,除了串口,没有任何外部出入输出设备,没有sd卡,没有网线,这个时候如果你想跟这块板子传输交互文件,要怎么办? 根据modem所采用的文件传输协议:xmodem,ymode ...
- 使用sz/rz基于串口传输文件
关键词:lrzsz.minicom.ZMODEM.MD5sum等. 在环境受限的嵌入式系统上,往往只有串口可以使用. 此时如果需要传输文件,需要借助rz/sz工具,可以使用的传输协议有ZMODEM.Y ...
- STM32 Bootloader基于ymodem传输协议串口IAP升级详解
硬件:stm32f103cbt6 软件:STM32F10x_StdPeriph_Lib_V3.5.0 文章目录 1 预备知识 2 Bootloader 2.1 启动流程 2.2 校验跳转地址是否有效 ...
随机推荐
- springmvc时间类型值传输映射
背景:springmvc4.3.2+spring4.3.2+mybatis3.4.1 当前台传递的参数有时间类型时,封装的vo对象也有对应的时间类型与之对象, 但是如果此时用对象去接收后台会报错,类型 ...
- HBase-建表(普通建表及预分区建表)
package com.hbase.HBaseAdmin; import java.io.IOException; import org.apache.hadoop.conf.Configuratio ...
- python使用笔记
修改文件模板,支持中文. File -> Settings -> Editor -> File and Code templates -> python Scropt 在里面加 ...
- SoapUI使用方法-01发送http请求
soap ui http://blog.csdn.net/russ44/article/details/51680083 一.发送HTTP请求消息 1.打开soapUI. 2.新建一个项目,实例如下: ...
- codeforces675D Tree Construction
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- Android国际化-图片国际化和文本字符国际化
注意: 1.是在res目录下面,新建文件夹 2.需要国际化的文本资源和图片资源名称是一样的 图片国际化 默认:drawable-xhdpi 中文简体:drawable-zh-rCN-xhdpi(或者不 ...
- CentOS 7 安装 Git
服务器端 1.先从yum安装git yum –y install git 2.在需要的位置创建一个裸仓库(最后以.git结尾) cd /usr/local mkdir git cd git git i ...
- python中利用正则表达式匹配ip地址
现在有一道题目,要求利用python中re模块来匹配ip地址,我们应如何着手? 首先能想到的是ip地址是数字,正则表达式是如何匹配数字的呢? \d或[0-9] 对于这个问题,不要一下子上来就写匹配模式 ...
- axure下载及汉化
第一步:下载axure rp 6.5英文原版 axure6.5官方英文下载地址: Windows版:http://t.cn/zW7JifS 第二步:安装汉化语言包 axure6.5汉化语言包中文包下载 ...
- 2018.8.10 programming bat based on python
@echo off REM Current DevProg Version. Match the pip package version (x.y.z)SET currentversion=0.4.0 ...