Кратко в чем проблема:
Приложение передает данные события onTouch на сервер ПК с помощью UDP. Иногда появляется задержка в передаче, т.е. данные не доходят на ПК, но с телефона вроде как должны уходить, т.е. вывожу в LogCat исходящее сообщение после вызова метода DatagramPacket.send(message) - вижу что они уходят, но на компьютере в консоли не появляются. Эта задержка длится примерно секунду, потом все продолжает передаваться нормально.
Понимаю что для UDP потери - нормально, но: до этого использовал TCP (сглупил конечно - передавать real-time данные лучше с UDP) и была аналогичная проблема - случайным образом происходила задержка, а потом кучей доходили сообщения которые отправлялись в это время с телефона (еще раз уточню - судил об отправке сообщений по выводу в логи после вызова метода send у UDP, у TCP println ).
Мысли по этому поводу:
- Когда использовал TCP грешил на алгоритм Нейгла, но после смены протокола проблема осталась (установка setTcpNoDelay(true) не помогла).
- Если имеет место какая-то проблема синхронизации потоков отправки сообщений и пользовательского интерфейса из которого сообщения шлются - то почему в логи выводится нормально.
- Возможно слишком часто отправляю данные - интервал отправки >=20 ms
Какие есть мысли по этому поводу? Буду рад любой подсказке - сам уже запутался что-то.
Если нужны какие-либо уточнения, пишите, а то и без того много тут "начиркал"
