Как я указал в комментарии выше, мне нужен был способ определить, не существует ли устройства, к которому я подключаюсь, и я делаю это, проверяя, возвращает ли наш 'ping' какие-либо данные. Если устройства там нет, оно заблокируется. Я не могу полагаться на это поведение. Другая проблема, которая возникла при решении этой проблемы, заключается в том, что методы read (...) класса RIM InputStream блокируют, если вы предоставляете буфер больше данных, которые вы хотите вернуть. Но как мне узнать, сколько там данных, если available () возвращает 0? Чтение за байтом - это единственный способ сделать это, но он все равно блокируется, если нет данных.
Чтобы решить эту проблему, я следовал теме первого ответа, но я поместил этот метод в свой собственный поток и записал его в отдельный байтовый буфер. Я создал класс, который расширил InputStream и реализовал available () и read (...). Доступно возвращает количество байтов в байтовом буфере, и только чтение возвращает, сколько находится в буфере или сколько запрашивает вызывающая сторона, в зависимости от того, что меньше.
Эта настройка позволяет мне использовать интерфейс InputStream, но за кулисами это просто непрерывно работающий поток чтения, который работает до тех пор, пока не будет разорвано соединение. В это время чтение, если оно заблокировано, выдаст исключение, указывающее, что соединение закрыто. Такое поведение хорошо, так как с ним легко справиться.
Спасибо всем выше, кто помог с этой проблемой. Ваши мысли помогают двигаться к решению.