博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mina APR传输与串口传输讲解---zhengli
阅读量:5819 次
发布时间:2019-06-18

本文共 2507 字,大约阅读时间需要 8 分钟。

原文地址:

1.1.1.APR传输

1.1.1.1.介绍

Apache便携式运行时库提供卓越的可扩展性、性能和能够更好地与本地服务器技术集成。Mina支持APR传输。在这部分,我没们将在Mina的基础之上使用APR传输。我们将使用Time Server的例子。

1.1.1.2.先决条件

APR传输依赖以下:

APR 程序包- 从下载/安装适当的平台jar包。JNI wrapper (tomcat-apr-5.5.23.jar)发布版本自带这个包。

 

将本地包加入到PATH路径下。

1.1.1.3.使用APR传输

参考完整示例程序。让我们来看出基于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.先决条件

有用的信息:

在访问串行端口之前程序需要一个本地程序库(根据你的操作使用.DLL或.so文件)。Mina使用来自于的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”等……和其他一些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://gwwdx.baihongyu.com/

你可能感兴趣的文章
【ros】Create a ROS package:package dependencies报错
查看>>
kali linux 更新问题
查看>>
HDU1576 A/B【扩展欧几里得算法】
查看>>
廖雪峰javascript教程学习记录
查看>>
WebApi系列~目录
查看>>
Java访问文件夹中文件的递归遍历代码Demo
查看>>
项目笔记:测试类的编写
查看>>
通过容器编排和服务网格来改进Java微服务的可测性
查看>>
re:Invent解读:没想到你是这样的AWS
查看>>
PyTips 0x02 - Python 中的函数式编程
查看>>
阿里云安全肖力:安全基础建设是企业数字化转型的基石 ...
查看>>
使用《Deep Image Prior》来做图像复原
查看>>
Linux基础命令---rmdir
查看>>
iOS sqlite3(数据库)
查看>>
粤出"飞龙",打造新制造广东样本
查看>>
编玩边学获数千万元A轮融资,投资方为君联资本
查看>>
蓝图(Blueprint)详解
查看>>
Spark之SQL解析(源码阅读十)
查看>>
Android图片添加水印图片并把图片保存到文件存储
查看>>
比特币系统采用的公钥密码学方案和ECDSA签名算法介绍——第二部分:代码实现(C语言)...
查看>>