Я использую Java DatagramSocket для потоковой передачи данных нескольким различным клиентам.Поскольку я сам обрабатываю список зарегистрированных на данный момент клиентов, я только привязываю сокет к порту сервера и не подключаюсь к какому-либо конкретному клиенту.
Однако, не используя connect (), я теряю способностьDatagramSocket для реагирования на ICMP-уведомления о недоступном порте, которые отправляются, если один из клиентов умирает и не получает возможности должным образом отменить регистрацию на сервере.
Есть ли способ вернуть такое поведение обратно?Я думал об использовании одного DatagramSocket для каждого клиента, но это не представляется возможным, поскольку все они должны были бы быть связаны с одним и тем же портом на сервере (насколько я знаю, это невозможно в UDP).
Я знаю, что нет никакой гарантии, что мой сервер когда-либо увидит сообщения ICMP, и я реализую некоторый механизм тайм-аута для обработки этого, но реакция на сообщения ICMP позволила бы мне немедленно прекратить передачу на любой хост, который неклиент не запущен, что, по-видимому, неплохо для пользователей потокового клиента.