Ich habe ein Programm, bei dem eine externe Komponente mir eine Zeichenfolge übergibt, die eine IP-Adresse enthält. Ich muss es dann in einen URI umwandeln. Für IPv4 ist das einfach. Ich stelle http: // und append / voran. Für IPv6 muss ich es jedoch in Klammern [] einschließen.
Gibt es einen Standard-Socket-API-Aufruf, um die Adressfamilie der Adresse zu bestimmen?
Verwenden Sie getaddrinfo () und setzen Sie den Hinweisflag AI_NUMERICHOST, family auf AF_UNSPEC, wenn erfolgreich Rückgabe von getaddrinfo, die resultierende Struktur addrinfo .ai_family Mitglied wird entweder AF_INET oder AF_INET6.
EDIT, kleines Beispiel
%Vor% Art von. Sie könnten inet_pton()
verwenden, um den String zuerst als IPv4 ( AF_INET
) und dann als IPv6 ( AF_INET6
) zu analysieren. Der Rückgabecode wird Sie wissen lassen, ob die Funktion erfolgreich war, und die Zeichenfolge enthält somit eine Adresse des versuchten Typs.
Zum Beispiel:
%Vor%Tags und Links c sockets network-programming