C init_ntop Funktion Beispiel

C init_ntop Funktion Beispiel
Die Funktion init_ntop () ist eine Funktion, mit der eine 32-Bit-IPv4- und 128-Bit-IPv6-Adresse in ein lesbares Format konvertiert wird. Im Gegensatz zur Funktion init_ptop wird die Adresse in der ursprünglichen Form konvertiert, da sie unter Verwendung von Init_pton () in eine binäre numerische Form konvertiert wurde (). Dies bedeutet, dass beide Funktionen für Datenschutzzwecke für Verschlüsselung und Entschlüsselung von IP -Adressen verwendet werden können.

Syntax

#enthalten
# const Zeichen *inet_ntop (int af, const void *Quelle, Zeichen *dst, Socklen_t Größe);

Genau wie init_pton hat es drei Hauptargumente als Parameter, aber auch ein 4. Argument, das sich mit der Größe des Socket/Puffer befasst, der von „DST) zeigt.Hier beschreiben wir die Parameter in der Funktion init_ntop ().

Argumente

Die allgemeine Beschreibung dieser Funktion ist, dass diese Funktion die IP -Adresse im lesbaren Binärformat umwandelt. Dies ist in erster Linie eine numerische Form des einfachen Textes. Diese Konvertierung erfolgt über das angegebene „SRC“, das sie im Textformat umwandelt, und dann wird der resultierende Wert in die „DST) platziert.”Es ist notwendig, die Größe/ den Raum des DST -Bereichs (Ziel) zu überprüfen. Denn wenn der Ort ausreicht, um die Adresse zu speichern, wird die resultierende Adresse angegeben. Im zweiten Fall muss eine kostenlose Puffererweiterung vorhanden sein, um die Adresse hinzuzufügen.

Das Argument „AF“ bezieht sich auf die Familie der Internetadresse. Es kann standardmäßig für IPv4 oder AF_INET6 für IPv6 sein. Der Parameter, der mit „SRC“ argumentiert. Die angegebene Adresse muss in der Reihenfolge des Netzwerk -Byte erfolgen.

Genau wie das Quellargument bezieht sich das Ziel 'DS' auf den Puffer, wobei die Funktion init_ntop () die resultierende Adresse in Form einer Zeichenfolge speichert. Der 4. gibt das Größenargument an, das auf die Größe des Puffers hinweist. Für dieses Argument wird angegeben, dass es immer ein Nicht-Null-Argument für ein Ziel angeben sollte. Für IPv6 -Adressen sollte der Speicherpuffer mindestens 46 Bytes haben, während der Puffer bei IPv4 -Adressen mindestens 16 Bytes betragen sollte.

Um Speicher in Form eines Puffers zu vermitteln, ist erforderlich und sollte auf Prioritätsebene erfolgen, da die Größe wichtig ist. Wir haben zwei Einschränkungen definiert, damit die Anwendungen Puffer für die genaue Größe leicht deklarieren/ zuweisen können, um IPv4- und IPv6 -Adressen im String -Format aufzunehmen. Diese Einschränkungen sind auch in der Bibliothek definiert .

#Define inet_addrstlen 16
#define inet_addrstrlen 46

Rückgabewert

Der Rückgabetyp ist der von der Funktion erhaltene Wert in beiden Fällen; Entweder wird es erfolgreich aufgerufen oder aufgrund eines Fehlers erfolglos beendet. Aber es kehrt immer zurück; Deshalb verwenden wir immer den 'int' -Rückkehrtyp für die Hauptfunktion. Wenn die Funktion erfolgreich ist, gibt Inet_ntop () einen Zeiger zurück, der an den Puffer zurückgegeben wird, der die Adresse nach dem Konvertierungsprozess enthält. Wenn die Funktion jedoch erfolglos ist.

Fehler, die durch die Funktion init_ntop () verursacht werden

Viele mögliche Fehler können die Funktion init_ntop () unterdrücken, um wirksam auszuführen, aber wir haben hier hauptsächlich zwei davon hervorgehoben.

Eafnosupport

Ein Parameter ist eine ungültige Zahl. Mit anderen Worten, es gehört nicht einer Familie des unterstützten Netzwerks.

Enospc

Dieser Fehler tritt auf weniger Platz zum Speichern der konvertierten Adresse auf. Das Ziel „DST“ ist nicht groß, was zu einem ausreichenden Speicher führt, um den resultierenden Wert oder die übersetzte Adresse zu speichern. In dem Errno wird der Grund erwähnt, und dann werden diese Fehler entfernt.

Genau wie inet_pton ist init_ntop auch mit der Socket -Programmierung zusammenhängen. Da die Socket -Funktion das Domänenargument als Parameter enthält, der zum AF_INET (IP) gehört, werden bei beiden Protokollen IPv4 oder IPv6 ausgewählt.

Implementierung von init_ntop ()

Vor Beginn der Implementierung haben wir festgestellt, dass die Verwendung und allgemeine Beschreibung dieser Funktion auch auf der manuellen Seite des Ubuntu Linux -Betriebssystems gemeinsam genutzt werden, um den Benutzer mit seiner Arbeitsfunktion zu erleichtern.

$ MAN INET_NTOP

Mit dem oben genannten Befehl wird der Benutzer auf eine Seite gerichtet, die alle Beschreibungen von init_ntop () enthält. Wir haben einen Ausschnitt für Ihre Hilfe beigefügt.

Beispiel 1

Wir haben die Beispiele im Linux -Betriebssystem implementiert. Zu diesem Zweck müssen Sie einen Texteditor haben, um Quellcodes darin zu schreiben. Für die resultierenden Werte werden wir das Ubuntu -Terminal verwenden. Öffnen Sie den Ubuntu-Standardtext-Editor und verwenden Sie den unten erwähnten Quellcode, um die Arbeit von init_ntop () zu demonstrieren,.

Init_ntop () funktioniert gegenüber init_pton; Wenn Sie ein Know-how von init_pton () haben, werden Sie die Funktionalität leicht verstehen. Andernfalls ist das Konvertieren von Adressen nicht allzu schwierig, diese Funktionen in der C -Programmiersprache zu verwenden.

Beginnend mit den Bibliotheken können Sie sehen, dass wir einen ARPA/INET verwendet haben.H Bibliothek, da sie alle Informationen zu Internetadressen enthält. Andererseits muss die System -Socket -Bibliothek auch überflüssig sein, da die Verbindung ohne sie nicht möglich ist.

#enthalten
#enthalten

Nach den Bibliotheken haben wir die Einschränkungen verwendet, um Adressen zu Internet -Protokollen 4 und 6 zu erwähnen. Die hier angegebene Adresse ist ein binäres Format, das in ein numerisches und leicht verständliches Format umgewandelt wurde. Zwei Strukturen werden hier sowohl für Th4- als auch für 6 IPs initialisiert. In ähnlicher Weise werden beide Puffer hier verwendet, um die resultierenden Werte zu speichern. Wenn Sie die Funktion init_ntop aufrufen, sollte sicherstellen, dass die Größe des Puffers nicht null ist. Und dann wird nach der Konvertierung die Adresse angezeigt. Im anderen Teil muss der Fehler identifiziert werden. Ein ähnlicher Fall ist mit sf_inet6.

Die Ausführung braucht einen Compiler. Dies ist ein GCC -Compiler. Mit dem Compiler wird der Dateiname erwähnt. Ihr Ntop.C 'ist der Name einer Datei.

$ gcc -o ntop ntop.C
$./ ntop

Bei der Ausführung werden Sie feststellen, dass beide Adressen für beide Internetprotokolle erfolgreich angezeigt werden, ohne auf Fehler zu stoßen.

Beispiel 2

Dieses Beispiel beinhaltet die Verwendung sowohl von Inet_ntop () als auch von Inet_PTON () Funktionen zusammen in einem einzelnen C -Quellcode. Die Pton () -Funktion enthält drei Argumente mit der Adresse. Gleichzeitig hat Inet_ntop () 4 Parameter mit der Puffergröße. Erstens konvertiert Pton () die Adresse in das binäre Format mit numerischen Werten, die nicht leicht von Menschen lesbar sind. Ein init_ntop () wandelt es wieder in ein Textformat um.

Kompilieren Sie den Code und führen Sie ihn aus.

Sie können sehen, dass die als Eingabe angegebene Adresse ohne Änderung mithilfe einer einfachen Zeichenfolge eine Adresse im Textformat erstellt wird.

Abschluss

Es wird der Schluss gezogen, dass der Artikel 'Init_ntop -Funktionsbeispiel' alle möglichen allgemeinen Beschreibungen bezüglich der Verwendung der NTOP () -Funktion zusammen mit den von ihm verwendeten Argumenten enthält. Es wurden auch einige Fehler erwähnt, die identifiziert werden müssen, wenn etwas in Bezug auf den Speicherplatz oder das Quellziel schief geht. Wie auch immer, wir haben zwei grundlegende, aber wirkungsvolle Beispiele verwendet, um die Arbeit dieser Funktion zu demonstrieren.