Как получить SelectableChannel из InputStream? - PullRequest
2 голосов
/ 20 апреля 2009

Я хочу читать из 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()

Ответы [ 2 ]

2 голосов
/ 20 апреля 2009

Не все InputStream гарантированно доступны для выбора, поэтому прямого способа сделать это не существует. К сожалению, класс CommPort не имеет метода для возврата SelectableChannel; не существует простого, портативного способа сделать это (то есть без полного нарушения инкапсуляции).

1 голос
/ 06 июня 2009

НИО не работает в этом отношении. Все, что вам нужно сделать, это немного осмотреть код и увидеть все преобразования, которые требуют каналы, как SocketChannel и т. Д. Невозможно повторно использовать что-либо в NIO для другого типа канала ввода-вывода на основе файлового дескриптора, как это должно быть.

Последнее, что я спросил, не было планов исправить это для повторного использования.

...