2 C -Funktion senden

2 C -Funktion senden
„Um eine Nachricht von einem Socket an einen anderen Kanal zu senden, können wir das System send (), sendTo () und sendsg () der C -Sprache im Kali -Linux -System verwenden. Wir können die Funktion "send () aufrufen, wenn der Sockel verbunden ist (damit der beabsichtigte Empfänger bekannt ist). Die Existenz von Flags ist das einzige Unterscheidungsmerkmal zwischen Send () und Schreiben (2) Funktionen. Die Funktion "send () ist gleichwertig mit einem Flags -Parameter von Null (2) zu schreiben. Darüber hinaus entspricht der nächste Anruf WQ1 SEND (SOCKKET_FILE_DESSCRIPTOR, PUBER, LANGE, FLAGS);
sendTo (socket_file_descriptor, puffer, länge, flags, null, 0);

Der Dateideskriptor des Sending Socket ist im Argument Socket_File_Descriptor enthalten. Die Nachricht befindet sich in einem Puffer und hat eine Länge der Länge für send () und sendTo (). Wir benötigen einen Server- und Client -Terminals, um die Funktionalität der Send () -Funktion praktisch zu verstehen. Zu diesem Zweck müssen wir den Code sowohl für den Server als auch für den Client schreiben. Erstellen Sie mit dem VIM -Editor einen Server.C Programmierdatei. Dies ist der Befehl zum Öffnen einer Codierungsdatei in VIM -Editor.”

Nachdem die erforderlichen Header -Dateien in die ersten fünf Zeilen des Servers eingefügt wurden.c Datei definieren wir eine Portvariable und setzen ihren Wert auf 8000. Nach dem Start der Hauptfunktion deklarieren wir drei Variablen vom Typ Integer-Typ als Server FD (Server-Dateideskriptor), einen neuen Socket und eine Nachricht, die in der ersten Zeile gelesen wurde. Deklarieren Sie die Adressvariable des Sockaddr -Typs danach.

Als nächstes definieren wir den Wert einer variablen Option zu 1. Verwenden Sie die Size_of -Funktion, die gleich der Adresse ist, die Adresslängenvariable. Legen Sie die Größe des Array-Variablenpuffer vom Charakter-Array auf 1024 ein und definieren Sie die Werte auf 0. Anschließend wird eine variable Meldung vom Typ Zeichen definiert und den Wert von „Hi, ich bin Server. Womit kann ich Ihnen behilflich sein?”. Die Arten von Adressen, mit denen Ihr Sockel kommunizieren kann, werden von der Adressfamilie AF_Inet bezeichnet (in diesem Fall sind Internet -Protokoll -V4 -Adressen).

Weisen Sie in einer bedingten Anweisung den Serverdateideskriptor zu und überprüfen Sie, ob die Zuordnung einen Fehler verursacht. Wenn es fehlschlägt, zeigen Sie die Fehlermeldung „Socket fehlgeschlagen“ und lassen Sie die Hauptfunktion. Mit der Funktion "setSockopt () kann ein Anwendungsprogramm verwalten, wie sich ein Sockel verhält. Da Port 8080 nicht verfügbar ist, befestigen wir den Socket in diesem bedingten Ausdruck gewaltsam an Port 8000. Wir binden den Server -Socket absichtlich an Port 8080 in der zweiten bedingten Linie. Wenn der Bindungsprozess nicht wie geplant verlief, verwenden Sie die PERROR -Methode, um eine Fehlermeldung und die Ausgangsfunktion anzuzeigen, um die Hauptfunktion zu hinterlassen. Überprüfen Sie, ob der Server im dritten bedingten Ausdruck auf die Client -Anforderung hört.

Wir akzeptieren die Serververbindung und setzen den neuen Socket -Wert in der vierten bedingten Anweisung, um anzugeben, dass der Server die Clientanforderung empfängt. Die vom Client mit dem Socket und des Puffer gesendete Nachricht sollte nun gelesen werden. Die Client -Nachricht wird dann auf dem Terminalbildschirm angezeigt und an den am Anfang der Hauptfunktion angegebenen Client gesendet. Schließen Sie den Socket und schalten Sie den Kanal mit dem Abschaltungsmechanismus ab, nachdem eine erfolgreiche Kommunikation beim Übergeben des Befehls für die Serverdatei und zum Schließen von RDWR stattgefunden hat.

Schließen Sie den VIM -Editor und kompilieren Sie den Code mit dem GCC -Compiler. Speichern Sie die Ausgabe- oder Objektdatei in der Serverdatei:

Es ist jetzt an der Zeit zu testen, ob der Servercode ausgeführt wird oder nicht, nachdem er die Kompilierung abgeschlossen hat. Benutze die./Server -Skript im Terminal und die Eingabetaste, um dies zu tun. Wenn der Cursor blinzelt, ist der Server aktiv und wartet auf eine Anfrage des Clients:

Jetzt müssen wir den Clientcode mit dem VIM -Editor schreiben und im Client speichern.c Datei.

Der Code für den Client wird auf dem Bildschirm unten angezeigt. Es enthält die Header -Dateien in den ersten Zeilen und legt den für die Kommunikation zwischen Server und Client verwendeten Port auf 8000 fest. Erstellen Sie drei Variablen vom Typ Ganzzahl und setzen Sie den Wert der Socken in der Hauptfunktion auf 0. Machen Sie als nächstes eine Variable mit dem Sockaddr in Typ. Legen Sie eine Nachrichtenvariable mit dem Wert „Grüße vom Kunden fest!Und rette es.

Verwenden Sie nun eine bedingte Anweisung, um den Socket zu erstellen und den Wert für die Socket -Variable zu speichern. Die IPv4- oder IPv6 -Adressen werden dann von Text in Binary konvertiert. Wir verwenden die Standardeinstellung des Servers 127.0.0.1 IP -Adresse. Wir verwenden die Funktion inet_pton aus diesem Grund. Als nächstes erstellen wir den Code, um die Funktion Connect zu verwenden, um eine Verbindung zum Socket herzustellen und den Client -Dateideskriptor zu definieren. Die Serveradresse wurde an sie geliefert. Wir sind jetzt bereit, die Sendungsfunktion zu verwenden, um die Nachricht an den Server zu übermitteln.

Der Socket, die Nachricht, die Nachrichtenlänge und das Flag-Dadurch sind auf 0 gesetzt-sind alle in der Sendenmethode enthalten. Zeigen Sie das auf dem Client -Terminal an, wenn die Nachricht gesendet wurde. Lesen Sie dann die Antwort des Servers und zeigen Sie sie auf dem Bildschirm an. Schließen Sie den Dateideskriptor nach einer erfolgreichen Kommunikation.

Kompilieren Sie nun den Code wie im unten stehenden Snippet.

Sie müssen bedenken, dass Sie den Server vor dem Ausführen des Clients ausführen müssen. Im Falle einer Kommunikationsaufschlüsselung ist dies die Ausgabe.

Hier ist der Screenshot der erfolgreichen Kommunikation auf der Serverseite:

Auf der Client-Seite:

Abschluss

In diesem Artikel haben wir die Verwendung von send () von c im Kali Linux -Programm demonstriert. Beachten Sie, dass wir nicht auf demselben Terminal interagieren können. Daher müssen wir zwei öffnen, einen für den Server und einen für den Client. Dieses Beispiel kann gemäß den Benutzern Anforderungen angepasst werden.