Немає такого поняття, як "відкритий" порт UDP, принаймні, не в тому сенсі, як більшість людей звикли думати (що відповідає щось на кшталт "ОК, я прийняв ваше з'єднання"). UDP не потребує сеансу, тому "порт" (читайте: протокол UDP в стеку IP операційної системи) ніколи не відповість "успіхом" самостійно.
Порти UDP мають лише два стани: прослуховування чи ні. Зазвичай це означає "відкрити на ньому розетку процесом" або "не відкрити сокет". Останній випадок повинен бути легко виявити, оскільки система повинна відповідати пакетом ICMP Destination Unreachable з кодом = 3 (Порт недоступний). На жаль, багато брандмауери можуть скинути ці пакети, тому якщо ви нічого не отримаєте, ви точно не знаєте, чи знаходиться порт у такому стані чи ні. І не будемо забувати, що ICMP також без сеансу і не робить повторних передач: пакет недоступних портів дуже добре може бути загублений десь у мережі.
Порт UDP у стані "прослуховування" може взагалі не реагувати (процес, який слухає на ньому, просто отримує пакет і нічого не передає), або він може щось відправити назад (якщо процес діє після отримання та якщо він діє відповідь через UDP на вихідний IP-порт відправника: порт). Отже, знову ж таки, ви ніколи не знаєте напевно, який стан, якщо нічого не отримаєте назад.
Ви кажете, що можете мати контроль над приймаючим хостом: це дозволяє вам створити власний протокол для перевірки доступності портів UDP: просто поставте процес на приймаючий хост, який прослухає даний порт UDP і відповість назад (або надішле вам електронною поштою або просто відродженням і unlink()
всім файловою системою хосту ... все, що викликає вашу увагу, зробить).