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

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

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

Пауза в запросах - Программирование Android

16.08.2013, 16:56. Просмотров 830. Ответов 5
Метки нет (Все метки)

Добрый день

Делаю клиент-серверное приложение. Есть такая ситуация: клиент (на Android) должен опрашивать сервер (сейчас на Windows, в будущем будет на Arduino, хотя это и не принципиально) по UDP протоколу.
Так вот, когда клиент отправляет один запрос - все отлично, но как только я посылаю запросы в цикле, то получается билиберда: то сервер получает не корректные данные, то клиент недополучает.
Я так понимаю, что необходимо организовать некую паузу для отправки запросов, но как? Пробовал с Тридами, вообще ужас получается: приложение замирает на общую паузу между запросами...

Вобощем замучался уже... пример был бы кстати

ps/ еще один вопрос, пока что не сильно важный, как проверить доступно ли wifi соединение и как узнать свой IP на этом соединении?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.08.2013, 16:56     Пауза в запросах
Посмотрите здесь:

Пауза в цикле - Программирование Android
Народ, научите пожалуйста как сделать паузу в цикле... А то бьюсь бьюсь и ничего не выходит(( Не получаеца сделать паузу после каждой...

Пауза в обрисовке OpenGL - Программирование Android
Привет всем. Я нарисовал куб, который вращается движение пальца, запустил его, но он постоянно перерисовывается. Как сделать так, чтобы он...

Нужно ли синхронизировать коллекцию при множественных асинхронных запросах? - Программирование Android
Доброго дня. Ситуация следующая. В Activity стартую AsynkTask, который обращается в сеть за JSON'ом. В методе onPostExecute моего Таска...

Таймер. Кнопка "Пауза" - Программирование Android
Вобщем, решил попробовать сделать таймер, нашел статью, вроде все получилось, но есть одно НО. Таймер тикает, нажимаю на стоп,...

Пауза - Visual Basic
Не без вашей помощи никак :drink: в общем, нужен скрипт паузы то есть, пример : Private Sub Form_Load() ' мой 1 код...

Пауза - ActionScript
Добрый день! Подскажите, как можно задать паузу, точнее какая команда для этого используется. Мне нужно чтобы ролик дойдя до определенного...

Пауза - C#
Здравствуйте) как реализовать паузу в плеере с помощью winmm.dll есть команда pause, которая вроде как останавливает...и команда...

Пауза - C#
Есть 2 метода один меняет label.Image на одну картинку, другой на другую. Не могу сделать между этитми методами паузу, чтобы взуально было...

Переменные в запросах - MS Access
Есть обычный запрос, который выбирает записи из таблицы. Для каждой строки нужно проставить значение, которое должно увеличиваться на 1 в...

Разница в запросах к бд ? - PHP БД
Подскажите что больше грузит систему ? такой запрос : mysql_fetch_array(mysql_query("SELECT id FROM account WHERE login =...

Расчёты в запросах ) - MS Access
Вот Допустим у меня есть список дат расположенных в одном столбце , как мне выбрать дату находящуюся во второй строчке в этом столбце )?...

Вычисление в запросах БД - MS Access
Доброго времени суток! Помогите составить запрос для БД в которой ведется учет топлива. Есть данные по обработанным гектарам и...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GiGaBiTe911
24 / 24 / 1
Регистрация: 04.02.2013
Сообщений: 132
Записей в блоге: 1
16.08.2013, 17:45     Пауза в запросах #2
Цитата Сообщение от sirik2012 Посмотреть сообщение
то сервер получает не корректные данные, то клиент недополучает
ну все правильно, это же UDP если не принципиально - попробуйте TCP или POST/GET запросами. как в UDP делать паузы.. незнаю.
sirik2012
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 45
16.08.2013, 21:43  [ТС]     Пауза в запросах #3
Не хочу делать POST/GET, так как особо различая я не вижу, точнее вижу, но как реализовать не знаю, да еще и парсить надо строки(.
Мне надо именно паузу, а в идеале каждый пакет был в отдельном потоке, но как это реализовать понятия не имею

ps/ если я шлю пакеты вручную через небольшие паузы, то все отлично, а вот в автомате, без пауз, никак((

ps2/ помню когда делал нечто подобное, но на VB6, так там я обошелся банальным Sleep
verylazy
Заблокирован
16.08.2013, 21:50     Пауза в запросах #4
UDP пакеты вообще могут прийти получателю не в той последовательности как их отправляли или вообще могут не дойти и тот, кто их отсылал об этом даже не узнает никак.
Если идет опрос сервера и будет двухсторонний обмен данными то однозначно TCP.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
16.08.2013, 22:10     Пауза в запросах #5
в потоке запускаете цикл и между итерациями юзаете sleep.
sirik2012
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 45
17.08.2013, 10:25  [ТС]     Пауза в запросах #6
Дело в том, что TCP в чистом виде я не могу использовать, так как в будущем планируется несколько клиентов, а сервер будет построен на Arduino. А на нем, я не знаю как построить данную реализацию.
При UDP действительно может произойти все что угодно, но я контролирую процесс получения пакетов, так сказать отправляю eco на каждый посланный пакет, в принципе все устраивает.

2 V0v1k: а можно пример? я сейчас делаю так: при клике кнопки вызываю внешнюю процедуру, которая в цикле отправляет запросы. я так понимаю, что надо процедуру отправки вынести в отдельный поток, но как?

Добавлено через 45 минут
Вот пример кода:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        Thread background = new Thread (new Runnable() {
           public void run() {
               try {
                   for (int i = 1; i<=2; i++){
                       send_msg ("12345,0," + i + ",0");
                       
                       Thread.sleep(100);
                   }
               } catch (java.lang.InterruptedException e) {
                   // if something fails do something smart
               }
           }
        });
        background.start();
send_msg ("12345,0," + i + ",0"); - процедура отправки сообщений, но как только вызывается поток происходит пауза, и на сервер вообще ничего не доходит(

Добавлено через 19 минут
В общем я понял в чем моя ошибка) вот окончательный код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
      Thread background = new Thread (new Runnable() {
           public void run() {
               try {
                   
                   while (indexSendMessage < 2) {
 
                       progressHandler.sendMessage(progressHandler.obtainMessage());
                       
                       Thread.sleep(500);
                   }
               } catch (java.lang.InterruptedException e) {
                   // if something fails do something smart
               }
           }
        });
        background.start();     
};
 
 
Handler progressHandler = new Handler() {
    public void handleMessage(Message msg) {
        indexSendMessage++;     
        send_msg ("12345,0," + indexSendMessage + ",0");
    }
};
переменную indexSendMessage, объявил глобально
Yandex
Объявления
17.08.2013, 10:25     Пауза в запросах
Ответ Создать тему
Опции темы

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