У меня есть сервис на Android, который прослушивает и отвечает на пакеты, полученные через многоадресную рассылку.
Это работает большую часть времени, но, к сожалению, я обнаруживаю, что время от времени он просто прекращает получать пакеты. Поток остается заблокированным при вызове MulticastSocket.receive (), но ничего не выходит. Я медленно пытался отследить, что это вызывает, и обнаружил, что выключение и повторное включение беспроводного соединения или изменение беспроводного соединения сделает это.
Чтобы успешно продолжить прослушивание моих пакетов, мне нужно закрыть MulticastSocket и заново создать его. Тем не менее, я не нашел никакого способа сделать это - я не получаю никаких уведомлений о том, что что-то произошло: никаких намерений, никаких исключений Java, ничего. Я ожидал бы, что при получении будет выдано исключение IOException, если сокет стал недействительным, но, похоже, этого не происходит.
Может ли кто-нибудь предложить какое-либо понимание относительно (а) того, что на самом деле происходит, и (б) как обойти это? Прямо сейчас мое лучшее предположение - постоянно разрушать и воссоздавать сокет каждые десять секунд или около того, и это просто зло.