Diese Funktion gibt die IP-Adresse des Clients zurück und sollte nach EventClient() aufgerufen werden. Wenn die Verbindung eine IPv6-Verbindung ist, dann muss die zurückgegebene Adresse mit FreeIP() freigegeben werden.
Wie bekomme ich heraus, ob der zurückgegebene Wert eine IPv6-Verbindung ist, damit ich sie mit FreeIP() freigeben kann?
Wenn dein Server an einer IPV6-Adressen gebunden ist, dann kriegst du auch eine IPv6-Adresse von getClientIP() zurück. Ein Server kann immer nur entweder an IPv4 oder IPv6 gebunden sein.
Ein Server im Sinne eines Computers kann das natürlich. Aber ein Netzwerksocket kann immer nur an eine IPv4- oder IPv6-Adresse oder jeweils alle IPV4- oder IPv6-Adressen gebunden sein. Okay, der Satz kann etwas verwirren. Vielleicht nochmal etwas klarer:
Ein Socket kann sich an eine bestimmte IPv4-Adresse binden, z.B. 127.0.0.1 (localhost)
Ein Socket kann sich an alle verfügbaren IPv4-Adressen gleichzeitig binden, das geht über 0.0.0.0
Ein Socket kann sich an eine bestimmte IPv6-Adressen binden, z.B. ::1 (localhost)
Ein Socket kann sich an alle verfügbaren IPv6-Adressen binden, das geht über ::/128
Man kann aber nicht einen Socket an eine IPv4- und an eine IPv6-Adresse gleichzeitig binden. Man kann einen Socket auch nicht an zwei verschiedene IPv4-Adressen oder zwei verschiedene IPv6-Adressen binden, es geht immer nur eine.