• 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

  • 相关阅读:
    2018.5.17 memcached
    2018.5.11 B树总结
    2018.5.8 排序总结
    2018.5.8 python操纵sqlite数据库
    2018.5.4 Unix的五种IO模型
    2018.5.3 maven
    2018.5.3 docker
    Mybatis学习笔记,挺全的!
    这么强大的Mybatis插件机制原来就是这?
    Swagger API Spec + Swagger Codegen + YAPI管理接口文档
  • 原文地址:https://www.cnblogs.com/fubinhnust/p/9943623.html
Copyright © 2020-2023  润新知