原文地址: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. POJ 1785 Binary Search Heap Construction(裸笛卡尔树的构造)

    笛卡尔树: 每个节点有2个关键字key.value.从key的角度看,这是一颗二叉搜索树,每个节点的左子树的key都比它小,右子树都比它大:从value的角度看,这是一个堆. 题意:以字符串为关键字k ...

  2. java001-Helloworld

    public class test05 { public static void main(String[] args) { System.out.println("Hello World! ...

  3. 【转】前端图片该保存为什么格式?png or jpg?

    疑虑: 图片存储为web格式,该用什么格式保存呢?png?jpg?压缩比例该为多大?css spript的优劣?有时候我们可能会因为一张格式不正确的图片而导致设计品质的下降以及页面性能的降低.了解图片 ...

  4. Android 加载时在actionBar右上角添加一个加载图标

    ①首先要在Activity的  setContentView()方法前调用requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); // ...

  5. mysql 中 isnull 和 ifnull 判断字段是否为null

    对于统计count(type)和avg(type) 都不起作用 SQL中有ISNULL方法,介绍如下: ISNULL使用指定的替换值替换 NULL. 语法ISNULL ( check_expressi ...

  6. java生成二维码的三个工具

    1.  使用SwetakeQRCode在Java项目中生成二维码 http://swetake.com/qr/ 下载地址 或着http://sourceforge.jp/projects/qrcode ...

  7. [itint5]最短路径遍历点

    http://www.itint5.com/oj/#50 此题有点难,参考了这篇文章,是个两条路的DP: http://blog.csdn.net/a83610312/article/details/ ...

  8. IOS开发--上传图片

    IOS图片上传功能实现总结 IOS图片上传主要分两种方式实现,一个是将图片信息以表单的形式上传,一种是将图片以JSON的格式上传. 首先要讲的是以这两个方式上传的一个比较明显的区别就是HTTP Hea ...

  9. 【Spring】Redis的两个典型应用场景--good

    原创 BOOT Redis简介 Redis是目前业界使用最广泛的内存数据存储.相比memcached,Redis支持更丰富的数据结构,例如hashes, lists, sets等,同时支持数据持久化. ...

  10. 自定义View(1)简单流程及示例模板

    1,继承View , ViewGroup,或TextView等等 2,绘制相关的api, canvas 画布, paint 画笔 2,重写重要的函数(注意这个顺序) onMeasure 属于View的 ...