C Getockname Funktionsnutzung

C Getockname Funktionsnutzung
Die Socket-Programmierung ist in der C-Programmierung zwischen Entwicklern und Benutzern bekannt und häufig. Innerhalb dieser Art von Programmierung neigen wir dazu, zwei Endpunkte zu verbinden. Diese Endpunkte können zwei Server sein, ein Server, ein Socket usw. Wie der Name schon sagt, wird die Funktion „GetockName“ verwendet, um den Namen eines Socket im Netzwerk zu erhalten. Es kann der Socket -Name sein oder auch nicht, aber die Adresse dieser bestimmten Socket würde mit dieser Funktion angezeigt werden. Daher haben wir eine einfache Methode ausprobiert, um die Funktion von Getockname () in C in diesem Handbuch zu veranschaulichen. Schauen wir uns ein neues Beispiel an, während wir mit Ubuntu 20 an dem Programm arbeiten.04 Linux -System.

Beispiel: Getockname -Funktion

Schauen wir uns das Beispiel der Getockname -Funktion in C an. Verwenden Sie die Schlüsselkombination „Strg+Alt+T“, um die Befehlszeilenanwendung auf Ihrem Bildschirm schnell zu öffnen. Es kann nur 10 Sekunden dauern und Ihr Terminal ist für den Gebrauch bereit. Innerhalb der Anleitung der Terminal müssen Sie die Abfrage „Touch“ zusammen mit dem "Dateinamen" eingeben, um eine ganz neue Datei in Ihrem System zu generieren.e., leer. Viele Optionen sind verfügbar, um diese neu generierte Datei zu öffnen.e., Vim, Nano oder Texteditor. Benutzer bevorzugen es, es zuerst im Texteditor zu öffnen, einen Code zu erstellen, den Code zu aktualisieren oder zu ändern und dann innerhalb der Shell auszuführen. Dies könnte durch einfaches Tippen auf den Dateinamen im Ordner "Home" des Datei Explorer erfolgen. Wenn Benutzer die leere Datei im Editor „GNU Nano“ öffnen möchten, können sie den Befehl „Nano“ des Terminals verwenden. Schreiben Sie diese Anweisung und drücken Sie die Eingabetaste, um sie auszuführen. Beide Anweisungen zur Erstellung und Öffnung von Dateien sind aufgeführt:

Der C -Code beginnt mit der Aufnahme einiger der wichtigsten und wichtigen Header -Dateien. Das Schlüsselwort „include“ wird mit dem Hash -Zeichen verwendet, um dies zu tun. Insgesamt 11 Header werden hier verwendet. Das „Stdio.H ”wurde verwendet, um den Standardeingang und die Ausgabe zu erhalten. Das „Unistd.H". wird verwendet, um auf die API des POSIX -Betriebssystems zuzugreifen, ich.e., Linux- und Unix-ähnliche Systeme. Das „stdlib.H ”Header ist eine Standardbibliothek für allgemeine Zwecke, ich.e., Geben Sie Conversions, Prozessmanagement, Speicherzuweisungen usw. ein. Das „Errno.H ”wird hauptsächlich für Fehlerprobleme und Berichterstattung verwendet. Die Saite.H ”-Modul für C wird verwendet, um die Saiten zusammen mit einigen anderen Funktionen zu behandeln. Die „sys/typen.H ”Header wird verwendet, um die Datentypen der Variablen und die in unserem Programmcode verwendeten Funktionen zu definieren.

Die Header -Datei “SYS/STAT.H ”wird hier verwendet, um die Konstruktion der zurückgegebenen Informationsdaten zu beschreiben. Die Headerbibliothek “Sys/Socket.H ”wird verwendet, um die Funktionen und die Veränderung von Sockets in unserem Code zu verwenden. Das „sys/un.H ”Header Library ist hier, um die Adressen von Unix-ähnlichen Sockets zu speichern. Das “netint/in.H ”wurde speziell entwickelt, um den mutablen Strukturtyp für die IPv6 -Adresse in Loopback zu initialisieren.

Die INET ADDRSTRLEN- oder INET6 ADDRSTRLEN -Variablen sind normalerweise im „ARPA/INET.H ”Headerbibliothek. Nach all den Header-Dateien haben wir eine benutzerdefinierte Funktion namens "Duschror" implementiert, in der ein Argument des ständigen Zeigers "E" ein Argument mit dem Zeiger "E" genommen wird ". Dieses Zeigerargument verweist auf einige Fehler, die bisher in unserem Code gefunden wurden. Für die C -Programmiersprache die POSIX -Fehlermethode, ich.e., Perror wird verwendet, um eine Fehlerantwortmeldung auf „Stderr“ anzuzeigen, abhängig von einem Errno -Fehlerzustand. Es gibt „str“ und eine Fehlerantwortmeldung aus, die dem universellen Mutable ERRNO entspricht, wie durch den Programmcode bestimmt. Die Funktion „Perror“ verwendet das Argument "E" als Fehlermeldung, um es anzuzeigen. Die Funktion „Beenden (1)“ ist hier, um die Funktion „Duschror ()“ gleich zu beenden oder zu beenden:

Hier kommt die Funktion „Sock_addr“ des Zeigertyps in seinen Parametern drei Argumente. Der Parameter „S“ repräsentiert die Socket, und die Zeigervariable „BUF“ wird verwendet, um die darin enthaltenen Socket -Daten zu speichern. Während das letzte Argument "bufsize" eines Objekts "size_t" verwendet wird, um die Größe einer Puffervariablen oder einfach Puffer zu definieren. Innerhalb dieser Funktion haben wir eine Struktur mit dem Namen „ADDR“ erstellt, um die Socket -Adresse zu speichern. Die Länge der "ADDR" -Variablen wurde in der Variablen "Len" der Ganzzahl vom Typ "Len" gespeichert, indem die Funktion „sizeof“ darauf angewendet wird.

Die Getockname () -Funktion wurde hier verwendet, um den Namen einer Steckdose zu erwerben. Diese Funktion verwendet Socket, Sockeladressen und Sockellänge als Eingabeargumente. Was auch immer die Antwort für die Getockname -Funktion ist, die Antwort wird in der Variablen „Z“ gespeichert, ich.e., gesammelt oder nicht. Die Anweisung "If" ist hier, um die Bedingung zu überprüfen, dass die Variable "z" den Rückgaberstatuscode als -1 erhalten hat.e., FALSCH. Wenn Sie nicht in der Lage sind, den Namen eines Sockels zu erhalten. Die Funktion „SNPRINTF“ wird verwendet, um die Adresse des Sockels zu erhalten, sie in Zeichenfolgenform zu konvertieren und auf der Shell anzuzeigen. Dafür müssen Puffer- und Puffergröße als Argument verwendet werden. Die Adresse des Socket -Ports wird in der Funktion „NTOHS“ verwendet, um ihn in den Host -Byte -Code zu konvertieren:

Die Funktion main () nimmt 4 Argumente in ihrem Parameter ein. Die Strukturtypadressvariable „ADDR“ für einen Socket wird mit der Variablen "BUF" der Größe 64 deklariert. Dann haben wir mit der Socket -Funktion eine Internet -Socket -IPv4 erstellt. Dieser Socket -Status gibt den Code zurück und wird in der Variablen "sck_inet" gespeichert, die gespeichert ist. Wenn der Socket nicht erfolgreich erstellt wird, wie das sck_inet nicht gleich Null ist, wird die Nachricht "Duschror" aufgerufen, während sie einen einfachen Text "Socket ()" übergeben ".

Danach haben wir versucht, eine "AF_inet" -Ade zu erstellen. Die Funktion memset () wird verwendet, um die Adresse für einen Socket auf 0 zu initialisieren. Die Socket -Adressfamilie wurde als „AF_INET“ initialisiert, ihr Port wird auch deklariert, während die HTONS -Funktion hier ist, um das Host -Byte -Format in das Netzwerk -Byte -Format zu übersetzen. Die Funktion inet_aton verwendet die lokale IP. Die Größe der Adressvariablen wird in der Len -Variablen gespeichert. Die Funktion bind () bindet die Adresse an den Socket und speichert den Statusrückgabe -Code in "Z". Wenn der Statuscode "-1" ist, i, ich.e., Falsch, es wird die Nachricht "Duschror" aufrufen, während die Funktion Bind () darin aufgerufen wird. Wenn die Funktion „Sock_addr ()“ nicht aufgerufen werden kann, wird auch die Funktion „Duschror“ als Argument aufgerufen, "Sock_addr" zu nennen. Die Printf -Anweisung zeigt den in einem Puffer gespeicherten Namen:

Die Schließfunktion wird aufgerufen, um den IPv4 -Internet -Socket zu schließen:

Nach der Zusammenstellung und Ausführung haben wir den Socket -Namen, mit dem unser System verbunden ist:

Abschluss:

Dieser Artikel ist in der Tat eine Notwendigkeit für jeden C -Benutzer, der eifrig nach dem Beispiel "GetockName" unter Linux sucht. Wir haben in diesem Leitfaden ein einzelnes Beispiel diskutiert. Wir haben versucht, für unsere Benutzer zu vereinfachen, da der Code in Stücke unterteilt wurde. Wir sind zuversichtlich, dass Sie diesen Artikel sehr hilfreich finden. Weitere Tipps und Tutorials finden Sie in anderen Linux -Hinweisartikeln.