GetClientIP(): IPv4 oder IPv6?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

GetClientIP(): IPv4 oder IPv6?

Beitrag von Kiffi »

Hallö,

aus der PB-Hilfe zu GetClientIP():
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?

Danke im Voraus & Grüße ... Peter
Hygge
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: GetClientIP(): IPv4 oder IPv6?

Beitrag von NicTheQuick »

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.
Bild
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Re: GetClientIP(): IPv4 oder IPv6?

Beitrag von DrShrek »

NicTheQuick hat geschrieben:Ein Server kann immer nur entweder an IPv4 oder IPv6 gebunden sein.
Zumindest intern kann ein Server beides nutzen.
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: GetClientIP(): IPv4 oder IPv6?

Beitrag von NicTheQuick »

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.
Bild
Antworten