当前位置:首页 > 开发 > 编程语言 > 网络编程 > 正文

MINA学习笔记六——第六章 Transports 传输协议

发表于: 2013-06-07   作者:bsr1983   来源:转载   浏览次数:
摘要: 第六章 Transports 传输协议 6.1 APR传输协议 6.11 简介     APR( Apache Portable Runtime)提供优越的可伸缩性,高性能且更好的与本地服务集成的计算。MINA支持APR传输协议。在这一章节中,我们将了解一下如何通过MINA使用APR传输协议。我们以一个时间服务器的示例来做说明。 6.1.2 先决条件

第六章 Transports 传输协议

6.1 APR传输协议

6.11 简介

    APR Apache Portable Runtime)提供优越的可伸缩性,高性能且更好的与本地服务集成的计算。MINA支持APR传输协议。在这一章节中,我们将了解一下如何通过MINA使用APR传输协议。我们以一个时间服务器的示例来做说明。

6.1.2 先决条件

APR传输协议依赖如下组件:

1APR依赖包:根据平台选择合适的依赖包下载并安装,下载地址为:http://www.apache.org/dist/tomcat/tomcat-connectors/native/

2JNI包装器(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文件放到你的JDKJREjre/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学习笔记六——第六章 Transports 传输协议

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
一、传输层协议 从之前介绍的网络层协议来看,通信的两端是两台主机,IP数据报首部就标明了这两台主
session是mina最重要的部分之一,每次客户端和服务器建立连接服务器都会创建一个session,并为这个s
session是mina最重要的部分之一,每次客户端和服务器建立连接服务器都会创建一个session,并为这个s
1.概述 TCP提供了一种可靠的面向连接的字节流运输层服务。 TCP将用户数据打包成报文段,它发送后启
1.概述 TCP提供了一种可靠的面向连接的字节流运输层服务。 TCP将用户数据打包成报文段,它发送后启
要将自己的文件通过http协议进行上传到Web服务器,就必须进行数据封装,也就是加上http协议的包头,
接上篇《IoSession对连接的操作》 IoFuture是和IoSession紧密相连的一个类,在官网上并没有对它的描
UNIX系统的正常运作需要使用大量与系统有关的数据文件,例如,口令文件/etc/passwd和组文件/etc/gro
I/O模型 首先我们将查看UNIX下可用的5种I/O模型的基本区别: 1.阻塞式I/O 2.非阻塞式I/O 3.I/O复用
第二章 基础 在第一章中,我们已对MINA有了一个简要的了解,在本章中,我们将介绍客户端/服务器架构
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号