Одновременные запросы с андроидов на сервер

Grisha

♙ ▁ ▂ ▃ ▅ ▆ █ ♚
Регистрация
30 Сен 2012
Сообщения
192
Реакции
286
Есть несколько планшетов с андроидом и сервер на винде. С сервера передаются вопросы с вариантами ответов, а с планшетов на сервер передаётся номер ответа.
При одновременном нажатии кнопок на планшетах сервер получает номера одной строкой, что является ошибкой. При неодновременном нажатии (то есть только на одном планшете в одно время) такой проблемы нет.
Попробовал с сервера по очереди с задержкой давать планшетам разрешение на передачу, но возникла проблема.

Нажатие кнопки на планшете:

...
Log.d(LOG_TAG, "ALLOWED setOK " + ALLOWED);

do
{
WrBool = proverka(); Здесь виснем, если ALLOWED == false
}
while (!WrBool);

Log.d(LOG_TAG, "ALLOWED OK " + WrBool);
...

В функции proverka() читаем ALLOWED

Получение разрешения с сервера:
...
case '6': // опрос
ALLOWED = true;
Log.d(LOG_TAG, "ALLOWED 6 " + ALLOWED);
set_timer3(); // устанавливает ALLOWED в false с задержкой
break;

По идее в цикле do-while мы должны дождаться разрешения с сервера (ALLOWED = true), но если нажали кнопку при
ALLOWED == false, цикл глухо виснет.

Что можно сделать?
 
Последнее редактирование:
для планшетов нужно сделать реализацию генерации уникальных ID, чтоб сервер видел, что приходят ответы от разных устройств
 
Есть несколько планшетов с андроидом и сервер на винде. С сервера передаются вопросы с вариантами ответов, а с планшетов на сервер передаётся номер ответа.
При одновременном нажатии кнопок на планшетах сервер получает номера одной строкой, что является ошибкой. При неодновременном нажатии (то есть только на одном планшете в одно время) такой проблемы нет.
Попробовал с сервера по очереди с задержкой давать планшетам разрешение на передачу, но возникла проблема.

Нажатие кнопки на планшете:

...
Log.d(LOG_TAG, "ALLOWED setOK " + ALLOWED);

do
{
WrBool = proverka(); Здесь виснем, если ALLOWED == false
}
while (!WrBool);

Log.d(LOG_TAG, "ALLOWED OK " + WrBool);
...

В функции proverka() читаем ALLOWED

Получение разрешения с сервера:
...
case '6': // опрос
ALLOWED = true;
Log.d(LOG_TAG, "ALLOWED 6 " + ALLOWED);
set_timer3(); // устанавливает ALLOWED в false с задержкой
break;

По идее в цикле do-while мы должны дождаться разрешения с сервера (ALLOWED = true), но если нажали кнопку при
ALLOWED == false, цикл глухо виснет.

Что можно сделать?
WrBool остается false и цикл не кончается, проблема может быть в set_timer3.
 
Используйте уникальный идентификатор и разделяйте ваши планшеты

import android.provider.Settings.Secure;

privateString android_id =Secure.getString(getContext().getContentResolver(),Secure.ANDROID_ID);

передавайте его одним из параметров, тогда вы сможете четко видеть на каком планшете/устройстве произошло нужное вам событие
 
Назад
Сверху