Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

29.02.2016, 19:58. Просмотров 233. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Read(). Как правильно прочитать из сокета? (Программирование Android):

Как правильно прочитать все фото которые есть в галерее - Программирование Android
Как правильно прочитать все фото которые есть в галерее телефона и вывести в recyclerview?

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

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

Как правильно создать объект сокета? - C++ Qt
QTcpSocket* socket=new QTcpSocket(); На эту строчку ругается компилятор так: error C2512: 'QTcpSocket' : no appropriate default...

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

Как правильно прочитать объявление? - C++
Как правильно прочитать данную конструкцию ((unsigned char*)(&a)) ? Вот код.Помогите пожалуйста. #include "stdafx.h" #include...

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

Как правильно прочитать скрипт? - VBA
Разъясните, пожалуйста, что означает каждая из строк данного скрипта. Суть его заключается в том что при вводе данных в одну колонку в...

Как правильно прочитать конструкцию? - Assembler
LEA EDX,DWORD PTR SS: как это правильно читается можно по подробней пожалуйста?

Как правильно прочитать InputStream? - Java Сети
На сервер приходит HTTP запрос нужно как то его прочитать. public void run() { String headers = "HTTP/1.0 200 OK\r\n"; ...

Как правильно прочитать данные? - C++
Как правильно прочитать данные? "ER-200" 06:43 10:40 "Red Arrow" 23:55 07:55 "Express" 23:59 08:00 "Slow Train 1" 10:00 09:59 ...


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

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

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