Es gibt keinen "offenen" UDP-Port, zumindest nicht in dem Sinne, wie die meisten Leute es gewohnt sind, darüber nachzudenken (was so etwas wie "OK, ich habe Ihre Verbindung angenommen" beantwortet). UDP ist sitzungslos, daher antwortet "ein Port" (gelesen: das UDP-Protokoll im IP-Stack des Betriebssystems) niemals "erfolgreich".
UDP-Ports haben nur zwei Zustände: Abhören oder nicht. Das bedeutet normalerweise, dass ein Socket durch einen Prozess geöffnet ist oder dass kein Socket geöffnet ist. Der letztere Fall sollte leicht zu erkennen sein, da das System mit einem ICMP-Ziel-Unreachable- Paket mit dem Code = 3 (Port nicht erreichbar) antworten sollte . Leider könnten viele Firewalls diese Pakete verwerfen. Wenn Sie also nichts zurückbekommen, wissen Sie nicht genau, ob sich der Port in diesem Zustand befindet oder nicht. Und vergessen wir nicht, dass ICMP auch sitzungslos ist und keine Neuübertragungen durchführt: Das Paket "Port Unreachable" kann sehr gut irgendwo im Internet verloren gehen.
Ein UDP-Port im Status "Abhören" antwortet möglicherweise überhaupt nicht (der Prozess, der darauf wartet, empfängt nur das Paket und überträgt nichts) oder er kann etwas zurücksenden (wenn der Prozess beim Empfang reagiert und wenn er von handelt) Antwort über UDP an den ursprünglichen Absender (IP: Port). Sie wissen also nie genau, wie der Zustand ist, wenn Sie nichts zurückerhalten.
Sie sagen, Sie können die Kontrolle über den empfangenden Host haben: Dies ermöglicht es Ihnen, Ihr eigenes Protokoll zu erstellen, um die Erreichbarkeit des UDP-Ports zu überprüfen. Legen Sie einfach einen Prozess auf dem empfangenden Host ab, der den angegebenen UDP-Port überwacht und antwortet (oder Sie sendet) eine E-Mail oder einfach nur ausflippen und unlink()
alles auf dem Host-Dateisystem ... alles, was Ihre Aufmerksamkeit auslöst, wird tun.