Les socket
Présenté par:
Draou maissa kaouter
Bouhadjela fatima zahra
Keddour Achraf
INTRODUCTION
Socket est un mécanisme ou une technique de bas niveau qui permet la
communication bidirectionnelle entre deux processus distincts dans un
ordinateur ou un réseau, leur permettant ainsi d'échanger des données de
manière organisée et fiable. C'est utilisable depuis n'importe quel langage,
par exemple (C, C++, C#, Java, JavaScript, Python).
1
portance des sockets dans le développement réseau :
Communication Bidirectionnelle Protocoles Réseau
permettant l'échange d'informations Les sockets sont utilisées pour
dans les deux sens. Cela est crucial mettre en œuvre les protocoles de
pour des applications telles que les communication réseau tels que
services client-serveur TCP/IP
Flexibilité et Portabilité
Les sockets offrent une interface
standardisée pour la programmation
réseau, ce qui les rend flexibles et
portables.
2
erface de Programmation d'Application
Une API, interface de programmation, est un ensemble de primitives qui
permettent de gérer l'échange des données entre les processus sur un
réseau.
Elle suit le format général suivant :
1- Ouverture : création de la socket et du canal de communication.
2- Échange : envoi et réception des données.
3- Fermeture : libération des ressources associées
3
socket() socket()
bind() connect(
)
e nt de
listen() lis s em
Etab exion
Serveu a c onn Client
L
r
accept()
Transfert des
recv() send()
données
send() recv()
4
Les types de sockets
1. Sockets de type Stream (TCP - Transmission Control Protocol) :
Le SOCK_STREAM est un type de socket qui fonctionne avec TCP,
Il est orienté connexion. Avec ce type , les données sont envoyées de manière
fiable et ordonnée, sans risque de perte ou de duplication.
Il est utilisé dans des applications qui exigent une communication fiable, telles
que la transmission de fichiers ou la navigation sur le web.
5
Les types de sockets
2. Sockets de type Datagram (UDP - User Datagram Protocol) :
Le SOCK_DGRAM , sockets basés sur UDP, un protocole de communication
sans connexion .
Ces sockets sont plus rapides que les sockets de type Stream,
mais la communication qu'ils offrent n'est pas garantie d'être fiable.
On les utilise souvent dans des applications où une perte de quelques
données n'est pas critique, comme dans les jeux en ligne ou la diffusion en
continu.
6
réation d'un Serveur avec Sockets :
[Link]éation du socket serveur :
int server_socket = socket(AF_INET, SOCK_STREAM, 0);
AF_INET : indique l'utilisation d'IPv4 (address family)
SOCK_STREAM : l'utilisation du protocole TCP.
2. Configuration de l'adresse du serveur :
struct sockaddr_in server_address = {AF_INET, htons(12345), {INADDR_ANY}};
Cela crée une instance de struct sockaddr_in appelée server_address
et l'initialise avec la famille d'adresse AF_INET, (la famille d'adresses utilisée est IPv4.)
le port 12345 (htons pour l'ordre des octets), où le serveur écoutera les connexions et
l'adresse IP INADDR_ANY pour lier à toutes les interfaces disponibles.
7
3. Connexion au serveur :
connect(client_socket, (struct sockaddr*)&server_address, sizeof(server_address));
printf("Connecté au serveur.\n");
4. Envoi des données :
char message[] = "Bonjour, serveur!";
send(client_socket, message, sizeof(message), 0);
5. Fermeture du socket:
close(client_socket);
9
6. Réception des données
char message[1024]; //tableau pour stocker les données reçues du
client.
recv(client_socket, message, sizeof(message),0);
printf("Données reçues: %s\n", message);
7. Fermeture des sockets
7. Fermeture des sockets
•close(client_socket);
•close(server_socket);
8
réation d'un Client avec Sockets :
Création du socket serveur :
int client_socket = socket(AF_INET, SOCK_STREAM, 0);
Configuration de l'adresse du serveur :
struct sockaddr_in server_address = {AF_INET, htons(12345), {inet_addr("[Link]")}};
Utiliser "[Link]" signifie que notre client se connectera au serveur sur la même
machine, car "[Link]" est l'adresse IP de la boucle locale (localhost).
9
Exemple :
Création d’un serveur socket :
10
11
Création d’un client socket :
12
Exécution des deux programmes
13
3. Liaison du socket à l'adresse et au port
bind(server_socket, (struct sockaddr*)&server_address, sizeof(server_address));
4. Attente de connexions
•listen(server_socket, 5);
•printf("Le serveur écoute sur le port 12345...\n");
5 : nbr maximal de connexions en attente qui peuvent être mises en
file d'attente
5. Acceptation d'une
connexion
•int client_socket = accept(server_socket, NULL, NULL);
•printf("Connexion établie avec le client.\n");
ce code permet au serveur d'accepter une connexion entrante
représentée par le descripteur client_socket .
14
Réception du message envoyé par le client dans le serveur
15
Conclusion
En conclusion, les sockets jouent un rôle central et incontournable
dans le développement des applications réseau. En offrant une
interface normalisée pour la communication entre les processus sur
un réseau, les sockets permettent la création d'applications
distribuées, interconnectées et performantes.
16
THANK YOU