Es könnte keine gute Idee sein, einen regulären Ausdruck auf das .toString()
von InetSocketAddress
anzuwenden, um dies zu tun. (siehe Kommentare zur obigen Frage)
Ein möglicher Alternativvorschlag besteht darin, eine URL oder URI zu verwenden, um die Adresse im String-Format auszugeben, welches viel standardisierter ist.
**Bearbeiten:**
Andererseits, wenn man sich mit regulären Ausdrücken quälen möchte... ;-)
IPv4:
Muster: .*/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+)
Java-Konstante: ".*/([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+):([0-9]+)"
Verarbeitet nur Adressen im format dotted-quad. Erkennt ungültige Adressen nicht.
IPv6:
Muster: .*/([0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+(%[a-zA-Z0-9]+)?):([0-9]+)
Java-Konstante: ".*/([0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+(%[a-zA-Z0-9]+)?):([0-9]+)"
Verarbeitet IPv6-Adressen mit allen 8 16-Bit Abschnitten. (nochmals: der einzige Grund, warum dies funktioniert, ist, dass die Inet6Address-Implementierung in Java die Adressen auf eine nicht standardmäßige Weise druckt - wahrscheinlich, damit sie die Portnummer anhängen kann und es keine Mehrdeutigkeiten gibt). Erkennt ungültige IPv6-Adressen nicht. Verarbeitet nur Kleinbuchstaben-Hex-Zeichen. Verarbeitet Zonen-/Bereichs-IDs (wenn vorhanden) mit Groß- oder Kleinbuchstaben und/oder Ziffern.
Ich habe sie mit einem praktischen Applet, das ich gefunden habe, getestet.
Und zur Vollständigkeit halber denke ich immer noch, dass es keine gute Idee ist. ;-) Ich kann nicht sicher sein, ob alle Java-Plattformen die Adressen auf diese Weise drucken werden.