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