Présentation des sockets
Bases de la communication réseau
Présentation des sockets est une leçon C Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C Academy comprend 4 leçons au total.
Qu’est-ce qu’un socket
Un socket est un point d’extrémité pour les communications réseau. Sur les systèmes POSIX, c’est un descripteur de fichier depuis lequel vous pouvez lire et écrire, ce qui permet à deux programmes d’échanger des données sur un réseau ou sur la même machine.
Le modèle client-serveur
La plupart des applications réseau utilisent le modèle client-serveur :
- Le serveur associe un socket à une adresse et attend les connexions
- Le client initie une connexion vers le serveur
Une fois la connexion établie, les deux parties envoient et reçoivent des données.
TCP ou UDP
Deux protocoles de transport principaux :
- TCP (SOCK_STREAM) : fiable, ordonné et fondé sur une connexion
- UDP (SOCK_DGRAM) : rapide, sans connexion ; des paquets peuvent être perdus ou réordonnés
Utilisez TCP pour la fiabilité et UDP pour les flux à faible latence.
Créer un socket
L’appel socket() renvoie un descripteur de fichier. Ses arguments sont la famille d’adresses (AF_INET pour IPv4), le type (SOCK_STREAM pour TCP) et le protocole (0 pour la valeur par défaut).
/* Conceptual: sockets need a network environment to run */
#include <sys/socket.h>
#include <netinet/in.h>
int create_tcp_socket(void) {
int fd = socket(AF_INET, SOCK_STREAM, 0);
/* fd < 0 means error; check with perror */
return fd;
}Structures d’adresse de socket
Une adresse IPv4 est décrite par struct sockaddr_in, qui contient la famille, le port et l’adresse IP. Les fonctions utilisent un struct sockaddr * générique ; vous devez donc effectuer une conversion de type.
#include <netinet/in.h>
void fill_addr(struct sockaddr_in *addr, unsigned short port) {
addr->sin_family = AF_INET;
addr->sin_port = htons(port); /* host to network short */
addr->sin_addr.s_addr = INADDR_ANY; /* all interfaces */
}L’ordre des octets est important
Les réseaux utilisent le gros-boutiste (l’ordre des octets réseau). Effectuez les conversions avec :
htons/htonl: de l’hôte vers le réseau (entier court/long)ntohs/ntohl: du réseau vers l’hôte
Convertissez toujours les ports et les adresses, sinon vous communiquerez avec le mauvais destinataire.
Conversion d’adresse IP
inet_pton convertit une adresse IP textuelle comme "127.0.0.1" en la forme binaire stockée dans sin_addr, et inet_ntop effectue l’opération inverse pour l’affichage.
#include <arpa/inet.h>
#include <netinet/in.h>
int set_ip(struct sockaddr_in *addr, const char *ip) {
return inet_pton(AF_INET, ip, &addr->sin_addr); /* returns 1 on success */
}Séquence des appels du serveur
Un serveur TCP appelle généralement, dans l’ordre :
socket()créer le socketbind()l’associer à une adresse et à un portlisten()le rendre passifaccept()obtenir une connexion
Séquence des appels du client
Un client TCP est plus simple :
socket()créer le socketconnect()joindre l’adresse du serveur
Il peut ensuite utiliser send et recv sur le même descripteur.
Envoyer et recevoir
Utilisez send() et recv() (ou les fonctions génériques write() et read()). Les deux peuvent transférer moins d’octets que demandé ; le véritable code effectue donc des boucles jusqu’à ce que toutes les données soient traitées.
Toujours vérifier les valeurs de retour
Chaque appel lié aux sockets peut échouer. Une valeur de retour de -1 définit errno ; appelez perror pour signaler l’erreur. Un recv de 0 signifie que l’homologue a fermé la connexion. La robustesse des communications réseau dépend entièrement de la vérification des erreurs.
Vérification rapide
Testez votre compréhension des bases des sockets.
Récapitulatif
Vous avez appris les fondements de la programmation avec des sockets.
- Un socket est un point d’extrémité réseau et un descripteur de fichier
- Le modèle client-serveur utilise TCP (fiable) ou UDP (rapide)
- Utilisez
sockaddr_inavechtonsetinet_pton - Serveur : socket, bind, listen, accept. Client : socket, connect
Questions Fréquemment Posées
La leçon « Présentation des sockets » est-elle gratuite ?
Oui — le texte complet de « Présentation des sockets » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C Academy, passe à CoddyKit PRO. Le cours C Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Présentation des sockets » ?
Bases de la communication réseau Tu pratiques C Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C Academy ?
Aucune expérience préalable n'est requise. C Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Présentation des sockets » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C Academy ?
Oui. Chaque leçon C Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Présentation des sockets
- Serveur TCP
- Client TCP
- Gérer plusieurs clients