Нужен совет: работа с плохими соединениями (gprs)
Есть приложение на j2me (хотя это не имеет особенного значения), которое открывает tcp-сокет до сервера и общается через него. Общение происходит мелкими запросами по 100-200 байт каждые несколько секунд. Ну да не важно все это...
С сокетом работает 1 тред, который его постоянно слушает (вызов .read() в цикле, ибо доступны только блокирующие операции, емнип), временами из основного треда в этот сокет что-то пишется. Все работает идеально, пока... пока не запускается через gprs, где соединение постоянно рвется, пинги по 30 секунд временами и похоже какое-то буфферизирование, поскольку данные приходят потом большими пачками. Поскольку приложение мобильное, то это безобразие надо как-то решить...
Я вот думаю завести еще один тред, который будет долбить соединение пингами (отдельными запросами) и если за 10 секунд ничего с сервера не получено, то будет рвать и пересоединять сокет. Но при такой схеме непонятно, прошли данные или нет... А если буфферизация большая, то есть риск вообще постоянно флудить запросами, так как приложение будет считать, что данные не прошли.
Мало того, что тред добавлять не охота (мобилки же, ресурсы ограничены), так и проблему с буфером это не решает... Подскажите чего?
это не только мои кривые руки, временами бомбус (мобильный мессенджер) глючит аналогично.
Плачу 5 баксов за _каждый_ стоющий совет + отзыв