原文地址: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

Android 的实现TextView中文字链接的4种方法的更多相关文章

  1. Android 去除list集合中重复项的几种方法

    因为用到list,要去除重复数据,尝试了几种方法.记录于此... 测试数据: List<"}; List<string> li2 = new List<string& ...

  2. Android 在子线程中更新UI的几种方法

    第一种: new Handler(context.getMainLooper()).post(new Runnable() { @Override public void run() { // 在这里 ...

  3. 解决android自带textview右侧文字不能对齐的问题

    package com.sixin.view; import android.content.Context; import android.graphics.Canvas; import andro ...

  4. Android中全屏 取消标题栏,TabHost中设置NoTitleBar的三种方法(转)

    Android中全屏 取消标题栏,TabHost中设置NoTitleBar的三种方法http://www.cnblogs.com/zdz8207/archive/2013/02/27/android- ...

  5. 【Android】Eclipse自动编译NDK/JNI的三种方法

    [Android]Eclipse自动编译NDK/JNI的三种方法 SkySeraph Sep. 18th  2014 Email:skyseraph00@163.com 更多精彩请直接访问SkySer ...

  6. CSS中隐藏内容的3种方法及属性值

    CSS中隐藏内容的3种方法及属性值 (2011-02-11 13:33:59)   在制作网页时,隐藏内容也是一种比较常用的手法,它的作用一般有:隐藏文本/图片.隐藏链接.隐藏超出范围的内容.隐藏弹出 ...

  7. C#调用接口注意要点 socket,模拟服务器、客户端通信 在ASP.NET Core中构建路由的5种方法

    C#调用接口注意要点   在用C#调用接口的时候,遇到需要通过调用登录接口才能调用其他的接口,因为在其他的接口需要在登录的状态下保存Cookie值才能有权限调用, 所以首先需要通过调用登录接口来保存c ...

  8. CSS中隐藏内容的3种方法

    CSS中隐藏内容的3种方法 一般有:隐藏文本/图片.隐藏链接.隐藏超出范围的内容.隐藏弹出层.隐藏滚动条.清除错位和浮动等. 1.使用display:none来隐藏所有内容 display:none可 ...

  9. C#中实现并发的几种方法的性能测试

    C#中实现并发的几种方法的性能测试 0x00 起因 去年写的一个程序因为需要在局域网发送消息支持一些命令和简单数据的传输,所以写了一个C/S的通信模块.当时的做法很简单,服务端等待链接,有用户接入后开 ...

随机推荐

  1. 10 harsh truths that will help you grow

    10 harsh truths that will help you grow帮你成长的10个残酷事实In the game of life, if it often seems like you’r ...

  2. HTML5入门1---Canvas画布

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. JavaWeb项目开发案例精粹-第2章投票系统-001设计

    1.项目结构 2.数据库设计 # MySQL-Front 5.0 (Build 1.0) /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE */; /*!40101 SET ...

  4. Qt源码分析之QObject

    原文:http://blog.csdn.net/oowgsoo/article/details/1529284 我感觉oowgsoo兄弟写的分析相当透彻,赞! 1.试验代码: #include < ...

  5. PowerDesigner连接Oracle数据库建表序列号实现自动增长

    原文:PowerDesigner连接Oracle数据库建表序列号实现自动增长 创建表就不说了.下面开始介绍设置自动增长列. 1 在表视图的列上创建.双击表视图,打开table properties — ...

  6. maven项目:Invalid bound statement

    在使用maven做mybatis项目时会遇到这个问题, org.apache.ibatis.binding.BindingException: Invalid bound statement (not ...

  7. 转Java 回调函数的理解

    所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数.例如Win32下的窗口过程函数就是一个典型的回调函数.一般说来,C ...

  8. java类的加载以及初始化顺序

    类的加载和初始化的了解对于我们对编程的理解有很大帮助,最近在看类的记载方面的问题.从网上查阅了若干文章,现总结如下: 我们通过一段代码来了解类加载和初始化的顺序: package com.classl ...

  9. iOS学习笔记:frame,bound,center, anchorPoint

    frame: View在它的Super View坐标系里的坐标 bound: 用来定义View自身坐标系和边界的Rect,Rect的原点表示View自身坐标系的原点坐标.举个例子: 一般情况下boun ...

  10. C++ STL之set的基本操作

    set是集合,虽然也存在键值和实值,不过两者根本就是同一个值,键值的设置完全就是为了满足红黑树的底层结构,set操作与map很像不过也有些不同. 1. set迭代器与map的不同: (1)set使用接 ...