【问题标题】:How to get SelectableChannel from an InputStream?如何从 InputStream 中获取 SelectableChannel?
【发布时间】:2010-10-20 10:35:11
【问题描述】:

我想通过超时读取 java.io.InputStream。显然正确的方法是使用 java.nio.channels.SelectableChannel 和 java.nio.channels.Selector。不幸的是,目前尚不清楚如何从 InputStream 转到 SelectableChannel。

InputStream 来自非传统来源 -- http://java.sun.com/products/javacomm/reference/api/javax/comm/CommPort.html#getInputStream()

【问题讨论】:

  • 抱歉,Gili,这不适用于 javax.comm。您也许可以破解 rxtx 项目以实现您自己的可选频道...但除非您尝试与已经与 any SelectableChannel 一起使用的包集成,否则这可能比获得所需的工作更多非阻塞串行 I/O。
  • 您将如何实现一个全新的 SelectableChannel?目前还不清楚 RXTX 是如何提供自己的实现的。

标签: java inputstream


【解决方案1】:

并非所有InputStreams 都保证可以选择,因此没有直接的方法可以做到这一点。不幸的是CommPort 类没有返回SelectableChannel 的方法;没有简单、可移植的方式来实现这一点(即,不完全破坏封装)。

【讨论】:

    【解决方案2】:

    蔚来在这方面做得很差。你所要做的就是看看代码,看看所有要求通道是 SocketChannel 等的强制转换。不可能像它应该的那样将 NIO 中的任何东西重用于另一种基于文件描述符的 I/O 通道。

    最后我问没有计划解决这个问题以进行通用重用。

    【讨论】:

      猜你喜欢
      • 2010-10-13
      • 2021-03-06
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      • 2017-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多