C Programmation

Prise POSIX avec programmation C

Prise POSIX avec programmation C

Un Socket POSIX ou simplement un Socket est défini comme un point de terminaison de communication. Par exemple, si deux parties, A et B, ont l'intention de communiquer entre elles, il sera alors nécessaire que ces deux parties établissent une connexion entre leurs points de terminaison respectifs. Une prise fournit aux parties communicantes une passerelle à travers laquelle les messages transitent. Si nous parlons en termes de client et de serveur, alors le travail de la socket côté serveur sera d'écouter les connexions entrantes, tandis que la socket côté client sera responsable de la connexion à la socket côté serveur. Cet article est destiné à rendre le concept de socket POSIX avec la programmation C beaucoup plus clair.

Exemple d'utilisation de Posix Socket avec la programmation C dans Linux Mint 20

L'exemple qui vous est présenté dans cette section démontrera une interaction entre un client et un serveur. Le client et le serveur sont les deux entités principales du modèle client/serveur dans le monde de l'informatique. Dans notre exemple, le client et le serveur s'enverront et recevront des messages l'un vers l'autre tout en utilisant le socket POSIX avec la programmation C dans Linux Mint 20. Pour clarifier la compréhension du code, nous avons séparé le code côté client et le code côté serveur et nous vous expliquerons les deux séparément ci-dessous.

Le code côté serveur

Pour le code côté serveur, nous avons simplement créé un document vide dans le répertoire personnel de notre système Linux Mint 20 et l'avons nommé serveur.c. Dans ce document vide, vous devez écrire les extraits de code affichés dans les trois images ci-dessous :

Le code montré dans les images ci-dessus peut sembler long, cependant, essayons de le comprendre d'une manière extrêmement simple. Tout d'abord, nous avons créé un socket et l'avons attaché avec le numéro de port souhaité, qui dans notre cas est 8080. Ensuite, nous avons écrit une fonction d'écoute, qui est là pour rechercher toutes les connexions entrantes des clients. Fondamentalement, le client parvient à se connecter au serveur juste à cause de la présence de cette fonction d'écoute. Et une fois cette connexion établie, le serveur est prêt à envoyer et recevoir des données vers et depuis le client.

Les fonctions de lecture et d'envoi servent respectivement à recevoir et à envoyer des messages aux clients. Nous avons déjà défini un message par défaut dans notre code que nous avons l'intention d'envoyer à notre client, et c'est "Bonjour du serveur". Après avoir envoyé ce message au client, il sera affiché côté client, alors qu'un message disant "Bonjour message envoyé" sera affiché côté serveur. Il s'agit de notre code côté serveur.

Le code côté client

Maintenant, pour le code côté client, encore une fois, nous avons créé un document vide dans le répertoire personnel de notre système Linux Mint 20 et l'avons nommé client.c. Dans ce document vide, vous devez écrire les extraits de code affichés dans les deux images ci-dessous :

Dans le code côté client montré dans les images ci-dessus, nous avons créé un socket de la même manière que nous l'avons fait pour le code côté serveur. Ensuite, il existe une fonction de connexion qui tentera d'établir une connexion avec le serveur via le port spécifié. Et une fois que cette connexion est acceptée par le serveur, le client et le serveur seront prêts à envoyer et recevoir des messages entre eux.

Encore une fois, tout comme le code côté serveur, les fonctions d'envoi et de lecture sont là pour envoyer et recevoir des messages du serveur, respectivement. De plus, nous avons mentionné un message par défaut que nous voulons envoyer au serveur, et c'est "Bonjour du client". Après avoir envoyé ce message au serveur, ce message sera affiché côté serveur, alors qu'un message disant « Bonjour message envoyé » sera affiché côté client. Et cela nous amène à la fin de l'explication de notre code côté client.

Compilation et exécution des codes côté client et côté serveur

Évidemment, nous enregistrerons à la fois nos fichiers côté client et côté serveur après avoir écrit ces programmes, puis nous serons prêts à compiler et exécuter ces codes. Ainsi, nous pourrons visualiser l'interaction entre notre client et serveur nouvellement créé. Pour atteindre cet objectif, nous devons lancer deux terminaux différents puisque nous sommes censés exécuter deux programmes distincts. Un terminal sera dédié à l'exécution du code côté serveur et l'autre au code côté client.

Ainsi, pour compiler notre code côté serveur, nous exécuterons la commande suivante dans le premier terminal :

$ serveur gcc.c -o serveur

Après avoir exécuté cette commande, s'il n'y aura pas d'erreurs dans votre code côté serveur, rien ne s'affichera sur le terminal, ce qui indiquera une compilation réussie.

De la même manière, nous allons compiler le code côté client avec la commande ci-dessous en l'exécutant dans le deuxième terminal :

$ client gcc.c -o client

Une fois les deux codes compilés, nous les exécuterons un par un. Cependant, nous devons d'abord exécuter le code côté serveur car il est censé écouter les demandes de connexion. Le code côté serveur peut être exécuté avec la commande suivante :

$ ./serveur

Après avoir exécuté le code côté serveur, nous pouvons exécuter le code côté client avec la commande ci-dessous :

$ ./client

Une fois que le client et le serveur seront opérationnels, vous verrez les sorties affichées dans les images suivantes sur les deux terminaux :

Conclusion

Espérons qu'après avoir parcouru l'exemple partagé avec vous dans cet article, vous serez en mesure d'utiliser efficacement les sockets POSIX pour envoyer et recevoir des données entre un client et un serveur. Cet exemple n'est qu'une démonstration de base des sockets Posix avec la programmation C, cependant, vous pouvez même rendre ces programmes plus complexes selon vos besoins.

Ajoutez des gestes de souris à Windows 10 à l'aide de ces outils gratuits
Ces dernières années, les ordinateurs et les systèmes d'exploitation ont considérablement évolué. Il fut un temps où les utilisateurs devaient utilise...
Contrôlez et gérez le mouvement de la souris entre plusieurs moniteurs dans Windows 10
Gestionnaire de souris à double affichage vous permet de contrôler et de configurer le mouvement de la souris entre plusieurs moniteurs, en ralentissa...
WinMouse vous permet de personnaliser et d'améliorer le mouvement du pointeur de la souris sur un PC Windows
Si vous souhaitez améliorer les fonctions par défaut de votre pointeur de souris, utilisez un logiciel gratuit WinMouse. Il ajoute plus de fonctionnal...