Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
vitaha
0 / 0 / 0
Регистрация: 05.04.2015
Сообщений: 8
#1

Read(). Как правильно прочитать из сокета? - Программирование Android

29.02.2016, 19:58. Просмотров 196. Ответов 1
Метки нет (Все метки)

День добрый! Не могу понять почему read() пролетает не дождавшись каких либо данных .Код ниже

...
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 if (сокет есть соединение) {                                                                  // шаг 1
               byte[] arrByte = new byte[countByte];  //////// к примеру countByte = 8     // шаг 2
            
            try {
                inStream.read(arrByte);                                                       // шаг 3
            } catch (IOException e) {
    
            } catch (Exception e) {
 
            }
        
            return arrByte;
        } else {
            return null; /////// переходит сюда
        }
...

Сейчас самое интересное!) иду дебагом по коду он у меня проходит все три шага, которые я описал в строчкаx кода и потом переходит в последний - return() /////// переходит сюда что вообще должно срабатывать если нет соединения
Если что-то по данным есть, то возвращает нормально, а вот если нет твориться такая каша...
Прошу помощи. Может кто сталкивался. setsotimeout не помог.
Весь этот код в бесконечном цикле

Спасибо!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.02.2016, 19:58     Read(). Как правильно прочитать из сокета?
Посмотрите здесь:
Android Как правильно прочитать все фото которые есть в галерее
Android Как прочитать db файл?
Как записать/прочитать картинку? Android
Как прочитать личные сообщения в твиттере Android
Как прочитать картинку с сервера по http? Android
Android Как прочитать видео или картинку из личных сообщений вк?
Android Как при нажатии на кнопку прочитать определенную строку в текстовом файле?
Android Android.os.NetworkOnMainThreadException при создании сокета
Вычитывание байтов из InputStream сокета Bluetooth Android
Android Как правильно парсить?
Android Как правильно выйти из приложения?
Как правильно пересоздать ViewSub? Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
EVP
321 / 243 / 43
Регистрация: 14.12.2010
Сообщений: 464
01.03.2016, 20:48     Read(). Как правильно прочитать из сокета? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от vitaha Посмотреть сообщение
Прошу помощи. Может кто сталкивался.
Блютус соединение как-то рассматривали, но повторю для твоего случая:
Цитата Сообщение от EVP Посмотреть сообщение
5-ая строчка - кошмар, т.к. блокирующий вызов на countByte байт.
Т.е. вернётся он только когда countByte байт отсчитает. Если их передано меньше, то будет ждать пока лимит не наберётся.
Воспользоваться нужно available() для определения сколько есть доступных байтов.
И читать только сколько доступно, а не весь массив.
Но тут риск: пакет наполовину прочитать. Поэтому надо знать размер пакета.
Пример был тут.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru