Prise POSIX en C

Prise POSIX en C

Dans la programmation de socket, nous devons avoir deux nœuds, je.e., client et un serveur. Un point de terminaison pour la transmission est connu comme une prise POSIX ou simplement une prise. Pour l'expéditeur et le récepteur, A et B, pour interagir les uns avec les autres, ces deux côtés doivent d'abord créer un lien sur leurs points de terminaison particuliers. Une autre prise (point de terminaison) recherche la première prise à générer un lien, tandis que la première prise répond sur un certain port sur une adresse IP. Alors que le client s'approche du serveur, le serveur génère la prise d'écoute. Dans ce guide, nous expliquerons l'utilisation de la fonction de socket à partir de la bibliothèque POSIX de C tout en utilisant l'Ubuntu 20.04 Système d'exploitation Linux.

Du côté serveur:

La rédaction du code client et du serveur est nécessaire pour la programmation de socket. Un seul nœud ou serveur peut y avoir connecté plusieurs clients. Les fichiers d'en-tête nécessaires à utiliser pendant que les prises de programmation sont incluses dans les huit premières lignes. En définissant la valeur sur 8080, nous définissons la variable globale du port. Si le port 8080 n'est pas disponible, nous pouvons l'échanger sur tout autre port qui est.

Nous déclarons quelques variables de type entier dans la méthode principale que nous utiliserons plus tard. Ces variables incluent celles du descripteur de fichiers de serveur (server_file_desc), le nouveau socket (new_socket) et la valeur ou le message lus du client (valeur_read). Les adresses pour la famille d'adresses Internet sont stockées dans une structure de type sockaddr, qui est déclaré dans la ligne après.

Plus tard, nous avons défini l'option = 1, la longueur d'adresse = sizeof (socket_address) et tampon [1024], qui ont été initialement définies sur 0 et ont été utilisées pour les messages extraits de clients d'une taille de 1024 octets. La variable de message, qui stocke le message envoyé par le serveur aux clients connectés, vient ensuite. Dans la ligne suivante, nous créons une prise et la passons AF_INET (la famille d'adresses connue sous le nom de AF INET est utilisée pour spécifier les types d'adresses avec lesquelles votre prise peut se connecter (dans ce cas, IP (Internet Protocol) V4 / V6 Adresses ).

TCP est un protocole de communication de transmission qui est un protocole basé sur la connexion. Une fois la connexion établie entre deux parties (client-serveur), la communication commence jusqu'à ce que la connexion soit résiliée ou interrompue par l'une des deux parties ou par un certain type d'erreur de connexion réseau. Voici le snap du code côté serveur écrit dans le serveur.c fichier.

Maintenant, nous fixons avec force la prise au port 8080. Après cela, nous initialisons la famille, l'adresse et le port de Socket. Après cela, nous lions l'adresse de la prise au port 8080. Maintenant, le serveur est prêt à écouter toute connexion du client. Nous imprimons donc un message avant la méthode d'écoute. Lorsqu'un client se connecte au serveur à l'aide de ce port, le serveur acceptera la connexion client.

Si le client et le serveur sont connectés, le serveur lira le message du client à l'aide d'un tampon et l'affichera sur l'écran du terminal. Similaire en ce qui concerne la façon dont les clients reçoivent des messages des serveurs, envoyez des méthodes pour transmettre un message et des informations sur les clients. Le serveur affiche ensuite un message de réussite avant de couper la communication avec la prise associée. Le serveur a également fermé le port de prise d'écoute sur le serveur.

Côté client:

L'image ci-dessous montre le client.C Snippet de code de fichier:

Le client se connecte au serveur à l'aide d'une prise à l'aide de la méthode Connect (), et nous avons également passé l'adresse du serveur. Le client et le serveur peuvent communiquer une fois la connexion établie efficacement. Affichez un message de défaillance sur l'écran du terminal si le serveur est en panne ou si le client n'est pas en mesure de se connecter pour aucune autre raison. Après une connexion réussie, le client utilisera une prise pour envoyer un message au serveur, lira le message du serveur à l'aide d'un tampon dans la variable de lecture de valeur et affiche la réponse du serveur à l'écran. Le client arrête ensuite la communication avec la prise liée.

Nous avons compilé le serveur.C et client.C fichiers C à l'aide du compilateur GCC, et nous avons enregistré les résultats du serveur.C et client.Colliers C. Les commandes pour compiler le serveur et les fichiers clients sont répertoriés ci-dessous.

Nous avions besoin de deux terminaux distincts, un pour le serveur et un pour le client, pour voir la communication entre eux. Appuyez sur Ctrl + Shift + N pour lancer un nouveau terminal à Ubuntu. Une chose que vous devez garder à l'esprit est que le serveur doit être actif et attendre une connexion du client. Vous recevrez l'erreur «La connexion avec le serveur a échoué» si le serveur est hors ligne et non connecté pour quelque raison que ce soit tandis que le client souhaite se connecter au serveur. Le snap ci-dessous montre cette erreur:

Lorsque nous exécutons le fichier de sortie du serveur, le serveur attendra que le client se connecte avant que les deux puissent communiquer. Tapez simplement ./ Serveur sur le terminal fraîchement ouvert pour démarrer le serveur. Voici une capture d'écran montrant que le serveur est opérationnel et prêt à accepter les connexions des clients:

Il est temps de démarrer le client maintenant. Pour initier la communication entre le client et le serveur, tapez «/ client» sur un nouveau terminal. Le serveur répond alors et envoie un message que le client lit, stocke dans une variable de message et affiche à l'aide d'une instruction PRINTF. Le message du client a été affiché sur l'écran du terminal ci-dessous.

Lorsqu'un client se connecte à un serveur, le serveur accepte un message pour vérifier la connexion. Le message du client est donc affiché sur l'écran ci-dessous. Suite à cela, le serveur informera le client et affichera un message de réussite. Suite à cette communication réussie, le serveur termine ou interdit la connexion avec le client.

Conclusion:

Nous avons terminé avec suffisamment d'explications et de démonstrations de la programmation de socket sur le client et le côté serveur en utilisant la bibliothèque POSIX du langage C. Nous avons brièvement expliqué à la fois les côtés du code de la programmation de socket et espérons que vous apprendrez des exemples.