Когда мы отправляем пакет из порта udp, мы получаем исключение, если сеть возвращает узел ICMP, недоступный. Исключение не говорит нам ничего полезного (например, содержимое пакета ICMP).
Нет проблем, мы просто послушаем ICMP, и это даст нам необходимую информацию, игнорируя при этом исключение для порта UDP. Итак, откройте необработанный сокет, прослушайте ICMP-пакеты и идите оттуда.
Отлично работает в разработке (Win XP), но в работе на сервере 2008 кажется, что контекст безопасности, в котором работает исполняемый файл, должен иметь права администратора, чтобы иметь возможность открывать необработанный сокет. Это бесполезно для службы. Если я понимаю, что говорит Microsoft, то единственный способ сделать то, что мы хотим, - запустить наш сервис под учетной записью с правами администратора. Для арахиса это похоже на кувалду, не говоря уже о потенциальной дыре в безопасности, связанной с работой службы, работающей в сети, под учетной записью администратора.
Я действительно надеюсь, что я ошибаюсь, но я не могу найти ничего, что противоречит вышесказанному.
Кто-нибудь получил какие-либо комментарии / намеки или сочувствие?