Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
vitaha
0 / 0 / 0
Регистрация: 05.04.2015
Сообщений: 8
1

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

29.02.2016, 19:58. Просмотров 857. Ответов 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 не помог.
Весь этот код в бесконечном цикле

Спасибо!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.02.2016, 19:58
Ответы с готовыми решениями:

Как правильно прочитать все фото которые есть в галерее
Как правильно прочитать все фото которые есть в галерее телефона и вывести в...

Как прочитать все из сокета?
Никто не подскажет, как прочитать полностью все данные из сокета? Т.е....

PHP - как открыть/прочитать файл из сокета через прокси сервер
не знаю правильно ли я выразился..., я имел ввиду как прочитать в переменную...

Как правильно создать объект сокета?
QTcpSocket* socket=new QTcpSocket(); На эту строчку ругается компилятор так:...

Прочитать несколько байт с сокета
Здравствуйте, уважаемые форумчане. Вопрос у меня следующий. ...

1
EVP
503 / 266 / 59
Регистрация: 14.12.2010
Сообщений: 535
01.03.2016, 20:48 2
Лучший ответ Сообщение было отмечено vitaha как решение

Решение

Цитата Сообщение от vitaha Посмотреть сообщение
Прошу помощи. Может кто сталкивался.
Блютус соединение как-то рассматривали, но повторю для твоего случая:
Цитата Сообщение от EVP Посмотреть сообщение
5-ая строчка - кошмар, т.к. блокирующий вызов на countByte байт.
Т.е. вернётся он только когда countByte байт отсчитает. Если их передано меньше, то будет ждать пока лимит не наберётся.
Воспользоваться нужно available() для определения сколько есть доступных байтов.
И читать только сколько доступно, а не весь массив.
Но тут риск: пакет наполовину прочитать. Поэтому надо знать размер пакета.
Пример был тут.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2016, 20:48

Как правильно прочитать текс?
device Atmega128 .include “m128def.inc” ldi r16,High(RAMEND) ...

Как правильно прочитать данные?
Как правильно прочитать данные? "ER-200" 06:43 10:40 "Red Arrow" 23:55 07:55...

Как правильно прочитать объявление?
Как правильно прочитать данную конструкцию ((unsigned char*)(&a)) ? Вот...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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