Mina Basics 06-传输

1.APR运输

2.串行传输

APR运输

介绍

APR(Apache Portable Runtime)提供卓越的可扩展性,性能以及与本机服务器技术的更好集成。 APA支持APR运输。在本节中,我们将基于如何使用MINA进行APR传输。我们将使用Time Server示例。

前置条件

APR运输取决于以下组件

APR库 - 从http://www.apache.org/dist/tomcat/tomcat-connectors/native/下载/安装适用于该平台的库 JNI包装器(tomcat-apr-5.5.23.jar)jar随附发行版

将本机库放在PATH中

使用APR传输

有关完整源,请参阅Time Server示例

让我们看看基于NIO的Time服务器实现如何

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 Transport

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传输。

剩下的处理过程保持不变。

串行传输

使用MINA 2.0,您可以像连接到MINA的TCP / IP端口一样连接到串行端口。

 

获得MINA2.0

您可以下载最新的内置版本(2.0.2)。

如果您希望从主干中构建代码,并需要帮助,请参阅开发人员指南。

条件

有用的信息

在从Java程序访问串行端口之前,您需要一个本机库(.DLL或.so,具体取决于您的操作系统)。 MINA使用RXTX.org中的一个:ftp//ftp.qbang.org/pub/rxtx/rxtx-2.1-7-bins-r2.zip。

只需将好的.dll或.so放在JDK / JRE的jre / lib / i386 /路径中,或使用-Djava.library.path =参数指定放置本机库的位置

mina-transport-serial jar不包含在完整发行版中。你可以在这里下载

连接到串口

由于通信介质的点对点性质,MINA的串行通信仅提供IoConnector。

此时您应该已经阅读过MINA教程。

现在要连接到串行端口,您需要一个SerialConnector:

// 创建你的连接
IoConnector connector = new SerialConnector()
connector.setHandler( ... here your buisness logic IoHandler ... );

没有什么不同的SocketConnector。

让我们创建一个连接到我们串口的地址。

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/RS232

posted @ 2018-11-11 21:21  天蓝隐湘  阅读(291)  评论(0编辑  收藏  举报