Création d'une application de serveur-client avec C.
Clone le projet et le CD dans le répertoire principal.
Ouvrez un terminal et configurez votre serveur avec la commande suivante:
./server [port]Vous devriez obtenir un résultat comme ceci:
Listening on 0.0.0.0:8080Après cela, connectez-vous au serveur avec votre client en utilisant cette commande:
./client [IP] [port]La programmation de socket est un moyen de connecter deux nœuds sur un réseau pour communiquer entre eux. Un socket (nœud) écoute un port particulier dans une IP, tandis que une autre prise atteint la main pour former une connexion. Le serveur forme la prise d'écoute tandis que le client atteint le serveur.
int sockfd = socket ( domain , type , protocol ) int bind ( int sockfd , const struct sockaddr * addr , socklen_t addrlen );Après la création du socket, Bind Fonction lie la prise à l'adresse et le numéro de port spécifié dans ADDR (structure de données personnalisée). Dans l'exemple de code, nous lions le serveur au LocalHost, nous utilisons donc InADDR_AND pour spécifier l'adresse IP.
int listen ( int sockfd , int backlog );Il met la prise de serveur en mode passif, où il attend que le client s'approche du serveur pour établir une connexion. L'arriéré définit la longueur maximale à laquelle la file d'attente des connexions en attente pour SOCKFD peut croître. Si une demande de connexion arrive lorsque la file d'attente est pleine, le client peut recevoir une erreur avec une indication d'EconnRefused.
int new_socket = accept ( int sockfd , struct sockaddr * addr , socklen_t * addrlen );Il extrait la première demande de connexion sur la file d'attente des connexions en attente pour la prise d'écoute, SOCKFD, crée une nouvelle prise connectée et renvoie un nouveau descripteur de fichier faisant référence à cette prise. À ce stade, la connexion est établie entre le client et le serveur, et ils sont prêts à transférer des données.
int connect ( int sockfd , const struct sockaddr * addr , socklen_t addrlen );L'appel système Connect () connecte la prise mentionnée par le descripteur de fichier sockfd à l'adresse spécifiée par addr. L'adresse et le port du serveur sont spécifiés dans ADDR.
pthread_t thread_id ;
pthread_create ( & thread_id , NULL , client_handler , ( void * ) & client_socket );Utiliser Pthread pour créer un fil pour chacun de nos clients et les gérer avec une méthode spécifique.