Inet Pton -Funktion in der C -Sprache

Inet Pton -Funktion in der C -Sprache

Die Socket -Funktionen verwenden Strukturen in ihren Eingabeargumenten, die Client- und Serverspezifische Daten enthalten. Die wichtigsten Informationen in diesen Strukturen sind zweifellos die IP -Adressen.

Es gibt verschiedene Arten von Strukturen, die von Socket -Funktionen verwendet werden, um diese Adressen zu speichern. Zum Beispiel: Sockaddr, addrinfo oder in_addr usw.

Unabhängig von der Art der Struktur, in der sie gespeichert werden. Dies bedeutet, dass es in bestimmten Fällen erforderlich ist, die IP -Adressen in Saiten oder Zeichenfolgen in IP -Adressen umzuwandeln, um mit ihnen zu arbeiten.

In diesem Linux -Hinweis In Artikel werden Sie lernen, wie Sie die Zeichenfolgen mit der IP -Adressen konvertieren inet_pton () Funktion.

Wir werden die Syntax dieser Funktion und eine theoretische Beschreibung der Funktionsweise, der Eingabe- und Ausgabeargumente und des Datentyps in jedem von ihnen betrachten.

Wir wenden dann das an, was wir in praktischen Beispielen gelernt haben, die Code -Snippets und Bilder enthalten, die zeigen, wie die Funktion inet_pton () in der C -Sprache die Zeichenfolgen in IP -Adressen umwandelt.

Syntax der Funktion inet_pton () in der C -Sprache

int inet_pton (int af, const char *src, void *dst);

Beschreibung der Funktion inet_pton () in der C -Sprache

Der inet_pton () Funktion konvertiert den in Bezug auf in Bezug genommenen String src zu einer Netzwerkadresse der Familie, die in angegeben ist af. Das Ergebnis dieses Prozesses ist eine Adresse im direkten binären Format, das in der Struktur zurückgegeben wird, auf die durch Ziel.

Diese Funktion akzeptiert IPv4- und IPv6 -Adressen und ist sehr nützlich, wenn wir die Verbindungsanwendungen in lokalen Netzwerken erstellen möchten.

Inet_pton () ist ergänzt zur Funktion inet_ntop () und führt eine umgekehrte Konvertierung durch.

Als nächstes betrachten wir die Eingabeargumente dieser Funktion im Detail:

AF: Dieser Eintrag gibt die zu konvertierende Adressfamilie an.

AF_Inet konvertiert die Zeichenfolge in eine IPv4 -Familienadresse.

AF_INET6 konvertiert die Zeichenfolge in eine Adresse der IPv6 -Familie.

SRC: Der Zeichenfolge oder Zeiger, der die Adresse im Textformat angibt.

Ziel: Der Zeiger auf die Struktur, in der die Adresse im direkten Binärformat gespeichert wird. Diese Strukturen können vom Typ Sockaddr, Sockaddr_in, Sockaddr_in6 usw. sein.

Wenn die Konvertierung erfolgreich ist, gibt diese Funktion 1 zurück. Wenn ein Fehler auftritt, gibt er 0 zurück. Der Fehlercode kann in der Abfrage in der Abfrage Errno Globale Variable.

Der inet_pton () Die Funktion ist im „Inet inet definiert.H ”Kopfball und ist eine von einer Reihe von“.H ”-Dateien, die die Verbindungsfunktionen definieren und im Ordner„ ARPA “gespeichert werden. Um diese Funktion zu verwenden, müssen wir sie wie folgt in unsere C -Datei aufnehmen:

#enthalten

So konvertieren Sie eine Zeichenfolge in eine IP -Adresse mit der Funktion inet_pton () in der C -Sprache

Im folgenden Beispiel konvertieren wir die Puffer String in eine Adresse und speichern Sie sie in einer Struktur von SOCKADDR_IN Typ, dessen Zeiger ist addr_in. Dazu weisen wir die zu “192.168.1.1 ” Adresse an die Pufferzeichenfolge und deklarieren Sie die ADDR_IN -Struktur und ihren Zeiger.

Dann von der Wenn Bedingung nennen wir das inet_pton () und geben Sie die Adressfamilie als Eingabeberechtigung weiter af, was in diesem Fall AF _inet ist. Wir übergeben die Adresse, die in der gespeichert ist Puffer als zweites Argument im String -Format. Schließlich übergeben wir die Adresse der addr_in Zeiger der Struktur, in der wir die Adresse im binären Format speichern.

Wenn während der Konvertierung ein Fehler auftritt, tritt das Programm in das Programm ein Wenn bedingt und zeigt die folgende Nachricht an: "Conversion -Fehler".

Wenn inet_pton () Gibt keinen Fehler zurück. Wir überprüfen die Adresse, die in der ADDR_IN -Struktur gespeichert ist, und verwenden die komplementäre Inet_ntop () -Funktion, um sie wieder in eine Zeichenfolge umzuwandeln und sie mit printf () in die Shell auszugeben ().

Das Folgende ist der Code, der die Konvertierung mit durchführt inet_pton (). Anschließend konvertiert die Adresse in eine Zeichenfolge zurück und druckt das Ergebnis in die Befehlskonsole aus:

#enthalten
#enthalten
#enthalten
#enthalten
int main ()

Zeichenpuffer [INET_ADdrstrlen] = "192.168.1.1 ";
struct sockaddr_in *addr_in;
//Wandlung
if (inet_pton (af_inet, puffer & addr_in) == 0)
printf ("Konvertierungsfehler");
Rückkehr 1;
// Überprüfen Sie die gespeicherte Adresse
memset (& buffer, '\ 0', sizeof (puffer));
inet_ntop (af_inet, & addr_in, buffer, inet_addrstrlen);
printf ("IP -Adresse: %s \ n \ n", Puffer);

Das folgende Bild zeigt die Kompilierung und Ausführung dieses Code:

Die folgende Abbildung zeigt das Ergebnis des Sendens einer Zeichenfolge mit einem ungültigen Adressformat. In diesem Fall gibt Inet_pton () 0 zurück und der Programmfluss in die IF -Bedingung, in der eine Fehlermeldung angezeigt wird.

So konvertieren Sie eine Zeichenfolge in eine IPv6 -Adresse mit der Funktion inet_pton () in der C -Sprache

Um eine Zeichenfolge in eine IPv6 -Familienadresse umzuwandeln, kann der Code aus dem vorherigen Beispiel verwendet werden. Wir müssen nur die Strukturen und Puffer mit den Größen verwenden af Eingang.

In diesem Fall muss die Puffergröße inet6_addrstrlen sein und die Zielstruktur muss vom Typ sein SOCKADDR_IN6. Hier ist der geänderte Code, um die Zeichenfolgen in IPv6 -Adressen umzuwandeln:

#enthalten
#enthalten
#enthalten
#enthalten
int main ()

Zeichenpuffer [INET6_ADdrstrlen] = "FD10: 1AFF: 48CA: B5F4: 0: 0: 0: 0";
struct sockaddr_in6 *addr_in;
//Wandlung
if (inet_pton (af_inet6, buffer & addr_in) == 0)
printf ("Konvertierungsfehler");
Rückkehr 1;
// Überprüfen Sie die gespeicherte Adresse
memset (& buffer, '\ 0', sizeof (puffer));
inet_ntop (AF_INET6, & addr_in, buffer, inet6_addrstrlen);
printf ("\ n \ nip Adresse: %s \ n \ n", Puffer);

Das folgende Bild zeigt die Kompilierung und Ausführung dieses Code, der eine Zeichenfolge in eine IPv6 -Adresse umwandelt:

Abschluss

In diesem Linux -Hinweise Artikel haben wir erläutert, wie das String -Format in Direct Binary mit dem Konvertieren in IP -Adressen konvertiert wird inet_pton () Funktion.

Wir haben eine theoretische Beschreibung dieser Funktion, ihrer Eingabeargumente und der Art der Daten gesehen, die sich jedes verarbeitet. Anschließend haben wir diese Funktion in praktischen Beispielen implementiert, die zeigen.

Wir hoffen, dass Sie diesen Artikel nützlich gefunden haben. Abonnieren Sie unsere Website und verwenden Sie unsere Suchmaschine, um weitere C -Artikel und Linux -Hinweise zu erhalten.