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

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

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

Пауза в запросах - Android

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

Добрый день

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

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

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

ActionScript Пауза
Пауза в цикле Android
Перечисление в запросах 1С 1C 8.x
SQL Server Ошибка в запросах
Пауза C#
C# Пауза
Расчёты в запросах ) MS Access
Assembler Пауза на 7 секунд или пауза до нажатия клавиши
Переменные в запросах MS Access
Android Пауза в обрисовке OpenGL
Таймер. Кнопка "Пауза" Android
Visual Basic Пауза

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
1157 / 981 / 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     Пауза в запросах
Ответ Создать тему
Опции темы

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