SlideShare une entreprise Scribd logo
1  sur  7
Chapitre 3 : Généralités sur les sockets
1- Qu'est-ce qu'un Socket
Un socket est une abstraction logicielle qui permet à deux applications de
communiquer sur une connexion réseau. Il fournit une interface de
communication entre deux ordinateurs afin qu'ils puissent envoyer et recevoir des
données. Essentiellement, un socket agit comme un conduit par lequel les données
peuvent être envoyées et reçues sur un réseau.
C’est une interface de communication introduite par les systèmes Unix pour la
communication réseau. Il s’agit d’un point d’accès aux services de la couche
transport, c’est-à-dire TCP ou UDP. La communication par sockets sur un réseau
adopte généralement un modèle client-serveur ; en d’autres termes pour
communiquer il faut créer un serveur prêt à recevoir les requêtes d’un client.
Dans tous les cas, avant d’utiliser une socket il faut la créer, c’est-à-dire créer un
descripteur associé à l’ensemble des informations constituant la socket (buffers,
adresse, port, état, etc.). Ensuite il est éventuellement possible de l’attacher à une
adresse représentant la provenance des messages envoyés.
Pile TCP/IP et liaison entre application et connexion TCP : l’API socket
NB : Pour programmer une application client-serveur, il est commode d’utiliser
les sockets. Les sockets fournissent une interface qui permet d’utiliser facilement
les protocoles de transport tels que TCP et UDP. Une socket est simplement un
moyen de désigner l’extrémité d’un canal de communication bidirectionnel, côté
client ou serveur, en l’associant à un port. Une fois le canal de communication
établi entre processus client et serveur, ceux-ci peuvent communiquer en utilisant
les mêmes primitives que pour l’accès aux fichiers/tubes.
Les sockets fournissent une interface d’accès, à partir d’un hôte, aux interfaces
de transport, notamment TCP et UDP.
Un socket TCP/IP est un point de terminaison pour la communication entre deux
ordinateurs sur un réseau. Il s'agit d'un identifiant unique qui représente une
connexion spécifique entre deux ordinateurs. Un socket est généralement associé
à un numéro de port qui identifie le type de trafic qui passe par le socket.
2- Quels sont les trois types de sockets ?
Il existe trois types de sockets :
1. Les sockets de flux - fournissent une connexion fiable en duplex intégral entre
deux ordinateurs. Les sockets de flux sont fiables et peuvent être utilisés pour
établir une connexion entre deux applications.
2. Les sockets de datagramme - fournissent un service sans connexion et non
fiable. Les sockets datagrammes ne sont pas fiables, mais sont utiles pour envoyer
des données rapidement entre deux applications.
3. Sockets bruts - fournissent un accès direct aux protocoles réseau sous-jacents.
3- L'API
L'API de socket est une interface de programmation d'application (API) qui
fournit des fonctions pour créer et manipuler des sockets. Elle fournit les outils
nécessaires aux applications pour communiquer sur un réseau.
Les adresses de sockets sont les identifiants uniques des sockets. Elles sont
typiquement composées d'une adresse IP et d'un numéro de port, qui sont utilisés
pour identifier de manière unique un socket.
La programmation de sockets est le processus d'écriture de programmes qui
utilisent des sockets pour communiquer sur un réseau. La programmation de
sockets est un composant majeur de la programmation réseau, et est nécessaire
pour que les applications puissent communiquer sur un réseau.
4- Les avantages de la programmation par sockets
La programmation par sockets fournit un moyen de communiquer facilement
entre deux applications, et peut être utilisée pour créer des applications
distribuées. Elle permet également la communication entre deux ordinateurs
géographiquement séparés et peut être utilisée pour créer des applications qui
peuvent s'adapter à un grand nombre d'utilisateurs.
5- Défis de la programmation Socket
La programmation Socket peut être difficile à apprendre, car elle nécessite la
connaissance des protocoles réseau sous-jacents. De plus, la programmation par
socket est souvent plus complexe que d'autres types de programmation et peut être
sujette à des erreurs.
6- Sécurité des sockets
La sécurité des sockets est une considération importante lors de la programmation
des sockets. Il est important de s'assurer que toutes les données envoyées ou
reçues sur un socket sont sécurisées, et que toute communication est cryptée.
7- Bibliothèques de socket
Les bibliothèques de sockets sont des collections de fonctions qui fournissent un
moyen plus facile de réaliser la programmation de sockets. Ces bibliothèques
fournissent généralement des fonctions pour créer, manipuler et envoyer des
données sur des sockets.
Dans l'ensemble, les sockets sont un outil important pour la programmation
réseau, et sont essentiels pour que les applications puissent communiquer sur un
réseau. La programmation de sockets peut être difficile, mais elle est facilitée par
l'utilisation de bibliothèques de sockets, et il est important de s'assurer que toutes
les données envoyées ou reçues sur un socket sont sécurisées.
8- A quoi sert un socket ?
Un socket est un point de terminaison de communication qui est utilisé pour
envoyer et recevoir des données. C'est un canal de communication de bas niveau
qui est utilisé par les programmes pour échanger des données.
Quelle est la différence entre un plug et un socket ?
Une fiche est un dispositif qui connecte un appareil électrique à une source
d'alimentation, tandis qu'une prise est un dispositif qui fournit une source
d'alimentation à un appareil électrique.
9- Quels sont les deux types de prises ?
Il existe deux types de prises : La prise Internet et la prise Unix. La prise Internet
est le type le plus courant et est utilisée pour se connecter à un serveur sur Internet.
Le socket Unix est utilisé pour se connecter à un serveur sur un réseau local.
10- Le système d'exploitation prend en charge l'ensemble de sockets de
base suivant:
Article Description
SOCK_DGRAM
Fournit des datagrammes, qui sont des messages sans connexion d'une
longueur maximale fixe. Ce type de socket est généralement utilisé pour
les messages courts, tels qu'un serveur de noms ou un serveur de temps,
car l'ordre et la fiabilité de la distribution des messages ne sont pas
garantis.
Article Description
Dans le domaine UNIX, le type de socket SOCK_DGRAM est similaire à une
file d'attente de messages. Dans le domaine Internet, le type de
socket SOCK_DGRAM est implémenté sur le protocole User Datagram
Protocol/Internet Protocol (UDP/IP).
Un socket datagram prend en charge le flux bidirectionnel de données, qui
n'est pas séquencé, fiable ou non dupliqué. Un processus recevant des
messages sur un socket de datagramme peut trouver des messages en
double ou dans un ordre différent de celui envoyé. Toutefois, les limites
d'enregistrement dans les données sont conservées. Les sockets de
datagramme modélisent de près les fonctionnalités trouvées dans de
nombreux réseaux à commutation de paquets contemporains.
SOCK_STREAM
Fournit des flux d'octets séquencés bidirectionnels avec un mécanisme de
transmission pour les données de flux. Ce type de socket transmet des
données de manière fiable, dans l'ordre et avec des capacités hors bande.
Dans le domaine UNIX, le type de socket SOCK_STREAM fonctionne
comme un canal de communication. Dans le domaine Internet, le type de
socket SOCK_STREAM est implémenté sur le protocole TCP/IP
(Transmission Control Protocol/Internet Protocol ).
Un socket de flux fournit le flux de données bidirectionnel, fiable, séquencé
et non dupliqué sans limites d'enregistrement. Outre la bidirectionnalité
du flux de données, une paire de sockets de flux connectés fournit une
interface presque identique aux canaux.
SOCK_RAW
Permet d'accéder à des protocoles et à des interfaces de réseau internes.
Ce type de socket est disponible uniquement pour les utilisateurs
disposant de droits utilisateur root ou pour les utilisateurs non root
disposant de la fonction CAP_NUMA_ATTACH . (Pour l'accès au socket
brut non root, la commande chuser affecte la
fonction CAP_NUMA_ATTACH , ainsi que CAP_PROPAGATE. Pour plus
d'informations, reportez-vous à la commande chuser .)
Les sockets bruts permettent à une application d'avoir un accès direct à
des protocoles de communication de niveau inférieur. Les sockets bruts
sont destinés aux utilisateurs avancés qui souhaitent tirer parti de
certaines fonctions de protocole qui ne sont pas directement accessibles
Article Description
via une interface normale ou qui souhaitent créer de nouveaux protocoles
en plus des protocoles de bas niveau existants.
Les sockets bruts sont normalement orientés datagramme, bien que leurs
caractéristiques exactes dépendent de l'interface fournie par le protocole.
SOCK_SEQPACKET
Fournit un flux d'informations séquencé,
fiable et non dupliqué.
SOCK_CONN_DGRAM
Fournit un service de datagramme orienté connexion. Ce type de socket
prend en charge le flux bidirectionnel de données, qui est séquencé et non
dupliqué, mais qui n'est pas fiable. Etant donné qu'il s'agit d'un service
orienté connexion, le socket doit être connecté avant le transfert de
données. Actuellement, seul le protocole ATM (Asynchronous Transfer
Mode) du domaine NDD (Network Device Driver) prend en charge ce type
de socket.
Les types de socket SOCK_DGRAM et SOCK_RAW permettent à un programme
d'application d'envoyer des datagrammes à des correspondants nommés dans les sous-
routines send . Les programmes d'application peuvent recevoir des datagrammes via des
sockets à l'aide des sous-routines recv . Le paramètre Protocole est important lorsque
vous utilisez le type de socket SOCK_RAW pour communiquer avec des protocoles de bas
niveau ou des interfaces matérielles. Le programme d'application doit spécifier la famille
d'adresses dans laquelle la communication a lieu.
Les types de socket SOCK_STREAM sont des flux d'octets en duplex intégral. Un socket
de flux doit être connecté pour que des données puissent être envoyées ou reçues. Lors
de l'utilisation d'un socket de flux pour le transfert de données, un programme
d'application doit exécuter la séquence suivante:
1. Créez une connexion à un autre socket avec la sous-routine connect .
2. Utilisez les sous-routines read et write ou les sous-routines send et recv pour
transférer des données.
3. Utilisez la sous-routine close pour terminer la session.
Un programme d'application peut utiliser les sous-routines send et recv pour gérer les
données hors bande.
Les protocoles de communication SOCK_STREAM sont conçus pour éviter la perte ou la
duplication de données. Si un élément de données pour lequel le protocole homologue
dispose d'un espace tampon ne peut pas être transmis dans un délai raisonnable, la
connexion est interrompue. Lorsque cela se produit, la sous-routine socket indique une
erreur avec une valeur de retour de -1 et la variable globale errno est définie
sur ETIMEDOUT. Si un processus est envoyé sur un flux interrompu, un
signal SIGPIPE est émis. Processus qui ne peuvent pas traiter l'arrêt du signal. Lorsque
des données hors bande arrivent sur un socket, un signal SIGURG est envoyé au groupe
de processus.
Le groupe de processus associé à un socket peut être lu ou défini par l'opération
ioctl SIOCGPGRP ou SIOCSPGRP . Pour recevoir un signal sur des données, utilisez les
opérations ioctl SIOCSPGRP et FIOASYNC . Ces opérations sont définies dans le
fichier sys/ioctl.h .

Contenu connexe

Similaire à Chapitre 3 Comprendre la notion de socket.docx

Presentation concernant les fondements des réseaux.pptx
Presentation concernant les fondements des réseaux.pptxPresentation concernant les fondements des réseaux.pptx
Presentation concernant les fondements des réseaux.pptxwiem12wiem1
 
Introduction_Reseau.pdf
Introduction_Reseau.pdfIntroduction_Reseau.pdf
Introduction_Reseau.pdfMohamedElbrak2
 
ITN_Module_6.pptx
ITN_Module_6.pptxITN_Module_6.pptx
ITN_Module_6.pptxserieux1
 
416769859360_chap2fondementdesreseaux2023.pdf
416769859360_chap2fondementdesreseaux2023.pdf416769859360_chap2fondementdesreseaux2023.pdf
416769859360_chap2fondementdesreseaux2023.pdfRihabBENLAMINE
 
administration réseaux.pdf
administration réseaux.pdfadministration réseaux.pdf
administration réseaux.pdfharizi riadh
 
Introduction_Reseau.ppt
Introduction_Reseau.pptIntroduction_Reseau.ppt
Introduction_Reseau.pptAmalHadri2
 
Les socket ing1_issat
Les socket ing1_issatLes socket ing1_issat
Les socket ing1_issatsloumaallagui
 
Diaporamas-Réseaux Informatiques.pdf
Diaporamas-Réseaux Informatiques.pdfDiaporamas-Réseaux Informatiques.pdf
Diaporamas-Réseaux Informatiques.pdfEST-UMI de Meknès
 
Généralités sur le routeur
Généralités sur le routeurGénéralités sur le routeur
Généralités sur le routeurStany Mwamba
 
1254851542chap1 interconnexion routage
1254851542chap1 interconnexion routage1254851542chap1 interconnexion routage
1254851542chap1 interconnexion routageSimo Qb
 
Introduction au Bluetouth
Introduction au BluetouthIntroduction au Bluetouth
Introduction au BluetouthKhalid ALLILI
 
Introductionreseaux1-2.pdf
Introductionreseaux1-2.pdfIntroductionreseaux1-2.pdf
Introductionreseaux1-2.pdfbenjat3
 
Réseaux
RéseauxRéseaux
Réseauxzan
 
LES RESEAUX INFORMATIQUES.pdf
LES RESEAUX INFORMATIQUES.pdfLES RESEAUX INFORMATIQUES.pdf
LES RESEAUX INFORMATIQUES.pdfssuser18776b
 

Similaire à Chapitre 3 Comprendre la notion de socket.docx (20)

Presentation concernant les fondements des réseaux.pptx
Presentation concernant les fondements des réseaux.pptxPresentation concernant les fondements des réseaux.pptx
Presentation concernant les fondements des réseaux.pptx
 
Introduction_Reseau.pdf
Introduction_Reseau.pdfIntroduction_Reseau.pdf
Introduction_Reseau.pdf
 
ITN_Module_6.pptx
ITN_Module_6.pptxITN_Module_6.pptx
ITN_Module_6.pptx
 
416769859360_chap2fondementdesreseaux2023.pdf
416769859360_chap2fondementdesreseaux2023.pdf416769859360_chap2fondementdesreseaux2023.pdf
416769859360_chap2fondementdesreseaux2023.pdf
 
assiter AR.pdf
assiter AR.pdfassiter AR.pdf
assiter AR.pdf
 
administration réseaux.pdf
administration réseaux.pdfadministration réseaux.pdf
administration réseaux.pdf
 
Introduction_Reseau.ppt
Introduction_Reseau.pptIntroduction_Reseau.ppt
Introduction_Reseau.ppt
 
Les socket ing1_issat
Les socket ing1_issatLes socket ing1_issat
Les socket ing1_issat
 
Diaporamas-Réseaux Informatiques.pdf
Diaporamas-Réseaux Informatiques.pdfDiaporamas-Réseaux Informatiques.pdf
Diaporamas-Réseaux Informatiques.pdf
 
Etude de la WIFI sur NS2
Etude de la WIFI sur NS2Etude de la WIFI sur NS2
Etude de la WIFI sur NS2
 
Formationreg3
Formationreg3Formationreg3
Formationreg3
 
Généralités sur le routeur
Généralités sur le routeurGénéralités sur le routeur
Généralités sur le routeur
 
1254851542chap1 interconnexion routage
1254851542chap1 interconnexion routage1254851542chap1 interconnexion routage
1254851542chap1 interconnexion routage
 
Général réseau typologie et architecture
Général réseau typologie et architecture Général réseau typologie et architecture
Général réseau typologie et architecture
 
Info reseaux
Info reseaux Info reseaux
Info reseaux
 
Introduction au Bluetouth
Introduction au BluetouthIntroduction au Bluetouth
Introduction au Bluetouth
 
Introductionreseaux1-2.pdf
Introductionreseaux1-2.pdfIntroductionreseaux1-2.pdf
Introductionreseaux1-2.pdf
 
Réseaux
RéseauxRéseaux
Réseaux
 
si3.pdf
si3.pdfsi3.pdf
si3.pdf
 
LES RESEAUX INFORMATIQUES.pdf
LES RESEAUX INFORMATIQUES.pdfLES RESEAUX INFORMATIQUES.pdf
LES RESEAUX INFORMATIQUES.pdf
 

Chapitre 3 Comprendre la notion de socket.docx

  • 1. Chapitre 3 : Généralités sur les sockets 1- Qu'est-ce qu'un Socket Un socket est une abstraction logicielle qui permet à deux applications de communiquer sur une connexion réseau. Il fournit une interface de communication entre deux ordinateurs afin qu'ils puissent envoyer et recevoir des données. Essentiellement, un socket agit comme un conduit par lequel les données peuvent être envoyées et reçues sur un réseau. C’est une interface de communication introduite par les systèmes Unix pour la communication réseau. Il s’agit d’un point d’accès aux services de la couche transport, c’est-à-dire TCP ou UDP. La communication par sockets sur un réseau adopte généralement un modèle client-serveur ; en d’autres termes pour communiquer il faut créer un serveur prêt à recevoir les requêtes d’un client. Dans tous les cas, avant d’utiliser une socket il faut la créer, c’est-à-dire créer un descripteur associé à l’ensemble des informations constituant la socket (buffers, adresse, port, état, etc.). Ensuite il est éventuellement possible de l’attacher à une adresse représentant la provenance des messages envoyés. Pile TCP/IP et liaison entre application et connexion TCP : l’API socket
  • 2. NB : Pour programmer une application client-serveur, il est commode d’utiliser les sockets. Les sockets fournissent une interface qui permet d’utiliser facilement les protocoles de transport tels que TCP et UDP. Une socket est simplement un moyen de désigner l’extrémité d’un canal de communication bidirectionnel, côté client ou serveur, en l’associant à un port. Une fois le canal de communication établi entre processus client et serveur, ceux-ci peuvent communiquer en utilisant les mêmes primitives que pour l’accès aux fichiers/tubes. Les sockets fournissent une interface d’accès, à partir d’un hôte, aux interfaces de transport, notamment TCP et UDP. Un socket TCP/IP est un point de terminaison pour la communication entre deux ordinateurs sur un réseau. Il s'agit d'un identifiant unique qui représente une connexion spécifique entre deux ordinateurs. Un socket est généralement associé à un numéro de port qui identifie le type de trafic qui passe par le socket. 2- Quels sont les trois types de sockets ? Il existe trois types de sockets : 1. Les sockets de flux - fournissent une connexion fiable en duplex intégral entre deux ordinateurs. Les sockets de flux sont fiables et peuvent être utilisés pour établir une connexion entre deux applications. 2. Les sockets de datagramme - fournissent un service sans connexion et non fiable. Les sockets datagrammes ne sont pas fiables, mais sont utiles pour envoyer des données rapidement entre deux applications. 3. Sockets bruts - fournissent un accès direct aux protocoles réseau sous-jacents. 3- L'API L'API de socket est une interface de programmation d'application (API) qui fournit des fonctions pour créer et manipuler des sockets. Elle fournit les outils nécessaires aux applications pour communiquer sur un réseau.
  • 3. Les adresses de sockets sont les identifiants uniques des sockets. Elles sont typiquement composées d'une adresse IP et d'un numéro de port, qui sont utilisés pour identifier de manière unique un socket. La programmation de sockets est le processus d'écriture de programmes qui utilisent des sockets pour communiquer sur un réseau. La programmation de sockets est un composant majeur de la programmation réseau, et est nécessaire pour que les applications puissent communiquer sur un réseau. 4- Les avantages de la programmation par sockets La programmation par sockets fournit un moyen de communiquer facilement entre deux applications, et peut être utilisée pour créer des applications distribuées. Elle permet également la communication entre deux ordinateurs géographiquement séparés et peut être utilisée pour créer des applications qui peuvent s'adapter à un grand nombre d'utilisateurs. 5- Défis de la programmation Socket La programmation Socket peut être difficile à apprendre, car elle nécessite la connaissance des protocoles réseau sous-jacents. De plus, la programmation par socket est souvent plus complexe que d'autres types de programmation et peut être sujette à des erreurs. 6- Sécurité des sockets La sécurité des sockets est une considération importante lors de la programmation des sockets. Il est important de s'assurer que toutes les données envoyées ou reçues sur un socket sont sécurisées, et que toute communication est cryptée. 7- Bibliothèques de socket Les bibliothèques de sockets sont des collections de fonctions qui fournissent un moyen plus facile de réaliser la programmation de sockets. Ces bibliothèques
  • 4. fournissent généralement des fonctions pour créer, manipuler et envoyer des données sur des sockets. Dans l'ensemble, les sockets sont un outil important pour la programmation réseau, et sont essentiels pour que les applications puissent communiquer sur un réseau. La programmation de sockets peut être difficile, mais elle est facilitée par l'utilisation de bibliothèques de sockets, et il est important de s'assurer que toutes les données envoyées ou reçues sur un socket sont sécurisées. 8- A quoi sert un socket ? Un socket est un point de terminaison de communication qui est utilisé pour envoyer et recevoir des données. C'est un canal de communication de bas niveau qui est utilisé par les programmes pour échanger des données. Quelle est la différence entre un plug et un socket ? Une fiche est un dispositif qui connecte un appareil électrique à une source d'alimentation, tandis qu'une prise est un dispositif qui fournit une source d'alimentation à un appareil électrique. 9- Quels sont les deux types de prises ? Il existe deux types de prises : La prise Internet et la prise Unix. La prise Internet est le type le plus courant et est utilisée pour se connecter à un serveur sur Internet. Le socket Unix est utilisé pour se connecter à un serveur sur un réseau local. 10- Le système d'exploitation prend en charge l'ensemble de sockets de base suivant: Article Description SOCK_DGRAM Fournit des datagrammes, qui sont des messages sans connexion d'une longueur maximale fixe. Ce type de socket est généralement utilisé pour les messages courts, tels qu'un serveur de noms ou un serveur de temps, car l'ordre et la fiabilité de la distribution des messages ne sont pas garantis.
  • 5. Article Description Dans le domaine UNIX, le type de socket SOCK_DGRAM est similaire à une file d'attente de messages. Dans le domaine Internet, le type de socket SOCK_DGRAM est implémenté sur le protocole User Datagram Protocol/Internet Protocol (UDP/IP). Un socket datagram prend en charge le flux bidirectionnel de données, qui n'est pas séquencé, fiable ou non dupliqué. Un processus recevant des messages sur un socket de datagramme peut trouver des messages en double ou dans un ordre différent de celui envoyé. Toutefois, les limites d'enregistrement dans les données sont conservées. Les sockets de datagramme modélisent de près les fonctionnalités trouvées dans de nombreux réseaux à commutation de paquets contemporains. SOCK_STREAM Fournit des flux d'octets séquencés bidirectionnels avec un mécanisme de transmission pour les données de flux. Ce type de socket transmet des données de manière fiable, dans l'ordre et avec des capacités hors bande. Dans le domaine UNIX, le type de socket SOCK_STREAM fonctionne comme un canal de communication. Dans le domaine Internet, le type de socket SOCK_STREAM est implémenté sur le protocole TCP/IP (Transmission Control Protocol/Internet Protocol ). Un socket de flux fournit le flux de données bidirectionnel, fiable, séquencé et non dupliqué sans limites d'enregistrement. Outre la bidirectionnalité du flux de données, une paire de sockets de flux connectés fournit une interface presque identique aux canaux. SOCK_RAW Permet d'accéder à des protocoles et à des interfaces de réseau internes. Ce type de socket est disponible uniquement pour les utilisateurs disposant de droits utilisateur root ou pour les utilisateurs non root disposant de la fonction CAP_NUMA_ATTACH . (Pour l'accès au socket brut non root, la commande chuser affecte la fonction CAP_NUMA_ATTACH , ainsi que CAP_PROPAGATE. Pour plus d'informations, reportez-vous à la commande chuser .) Les sockets bruts permettent à une application d'avoir un accès direct à des protocoles de communication de niveau inférieur. Les sockets bruts sont destinés aux utilisateurs avancés qui souhaitent tirer parti de certaines fonctions de protocole qui ne sont pas directement accessibles
  • 6. Article Description via une interface normale ou qui souhaitent créer de nouveaux protocoles en plus des protocoles de bas niveau existants. Les sockets bruts sont normalement orientés datagramme, bien que leurs caractéristiques exactes dépendent de l'interface fournie par le protocole. SOCK_SEQPACKET Fournit un flux d'informations séquencé, fiable et non dupliqué. SOCK_CONN_DGRAM Fournit un service de datagramme orienté connexion. Ce type de socket prend en charge le flux bidirectionnel de données, qui est séquencé et non dupliqué, mais qui n'est pas fiable. Etant donné qu'il s'agit d'un service orienté connexion, le socket doit être connecté avant le transfert de données. Actuellement, seul le protocole ATM (Asynchronous Transfer Mode) du domaine NDD (Network Device Driver) prend en charge ce type de socket. Les types de socket SOCK_DGRAM et SOCK_RAW permettent à un programme d'application d'envoyer des datagrammes à des correspondants nommés dans les sous- routines send . Les programmes d'application peuvent recevoir des datagrammes via des sockets à l'aide des sous-routines recv . Le paramètre Protocole est important lorsque vous utilisez le type de socket SOCK_RAW pour communiquer avec des protocoles de bas niveau ou des interfaces matérielles. Le programme d'application doit spécifier la famille d'adresses dans laquelle la communication a lieu. Les types de socket SOCK_STREAM sont des flux d'octets en duplex intégral. Un socket de flux doit être connecté pour que des données puissent être envoyées ou reçues. Lors de l'utilisation d'un socket de flux pour le transfert de données, un programme d'application doit exécuter la séquence suivante: 1. Créez une connexion à un autre socket avec la sous-routine connect . 2. Utilisez les sous-routines read et write ou les sous-routines send et recv pour transférer des données. 3. Utilisez la sous-routine close pour terminer la session. Un programme d'application peut utiliser les sous-routines send et recv pour gérer les données hors bande. Les protocoles de communication SOCK_STREAM sont conçus pour éviter la perte ou la duplication de données. Si un élément de données pour lequel le protocole homologue
  • 7. dispose d'un espace tampon ne peut pas être transmis dans un délai raisonnable, la connexion est interrompue. Lorsque cela se produit, la sous-routine socket indique une erreur avec une valeur de retour de -1 et la variable globale errno est définie sur ETIMEDOUT. Si un processus est envoyé sur un flux interrompu, un signal SIGPIPE est émis. Processus qui ne peuvent pas traiter l'arrêt du signal. Lorsque des données hors bande arrivent sur un socket, un signal SIGURG est envoyé au groupe de processus. Le groupe de processus associé à un socket peut être lu ou défini par l'opération ioctl SIOCGPGRP ou SIOCSPGRP . Pour recevoir un signal sur des données, utilisez les opérations ioctl SIOCSPGRP et FIOASYNC . Ces opérations sont définies dans le fichier sys/ioctl.h .