die eckigen Klammern sind soweit ich weiß dafür da, dass der Port von der
URL unterschieden werden kann.
Vom
Host, nicht von der
URL.
@DeddyH: In welchem Format kommen die Verbindungsdaten denn rein und in welchem benötigst du sie? Ich denke die beste Option wäre es, die Unterscheidung zwischen IPv4 und IPv6 gar nicht erst zu machen und stattdessen komplett transparent für dich zu arbeiten – falls das denn geht.
Brauchst du also beispielsweise einen String für Hostname/
IP und einen Integer für den Port, dann leg lieber zwei Felder an und kümmer dich nicht um dessen Format. Ich vermute gerade, dass du ein Feld hast, in welchen der Benutzer "example.com:1234" eingeben kann und du das anhand des Doppelpunkts dann aufsplittest?
Zusätzlich gibt es noch das Problem, dass man bei Eingabe eines Hosts statt einer
IP nicht ohne DNS Lookup überhaupt sehen kann, ob IPv4 oder IPv6 verwendet wird. Auf unixoiden Systemen lässt sich dann zusätzlich auch die Präferenz beider Protokolle einstellen (Standardmäßig natürlich v6), was die Ermittlung weiter natürlich noch mehr erschwert. Oder warum musst du wissen ob IPv4 oder IPv6 verwendet wird?