Академический Документы
Профессиональный Документы
Культура Документы
Les Sockets cb
Plan
• Présentation
• L’enchainement des primitives
• Les primitives
• Conclusion
• Quelques informations supplémentaires
Bibliographie
• L.Toutain, Réseaux locaux et Internet, Hermès, 1996.
• M.Gabassi, B.Dupouy, L’informatique répartie sous Unix, Eyrolles, 1992.
• J-M.Rifflet, La communication sous Unix, EdiScience international, 1995.
• D.E.Comer, Internetworking with TCP/IP, Prentice-Hall, 1991.
____
B.Cousin et C.Viho - © IFSIC - Université Rennes I 1
■ Programmation des communications ■
1. Présentation
1.1. Définition
Une Socket : un point de communication par lequel un processus peut émettre ou recevoir des données
❏ Homogène avec les identificateurs d’E/S :
. l’identificateur (de descripteur) de Socket est compatible avec l’identificateur (de descripteur)
de fichiers.
❏ On distingue la création de la Socket : socket(), de son initialisation avec les adresses et les
numéros de port : bind(), connect(), à contrario des fichiers : open() !
____
B.Cousin et C.Viho - © IFSIC - Université Rennes I 2
■ Programmation des communications ■
1.3. Serveur/Client
Un serveur :
- processus rendant un service spécifique identifié par un port particulier (n˚ port),
- en attente sur une station (@IP)
Des clients :
- processus appelant le serveur afin d’obtenir le service,
- lancé à la demande à partir généralement de n’importe quelle station.
____
B.Cousin et C.Viho - © IFSIC - Université Rennes I 3
■ Programmation des communications ■
0 . . . . . . . . . . . . . 16 . . . . . . . . . . . . . . 32 bits
address family protocol port
IP address struct sockaddr_in
unused
unsused
____
B.Cousin et C.Viho - © IFSIC - Université Rennes I 4
■ Programmation des communications ■
Chaque système maintient localement (ou accède à) une base de données contenant des informations sur
les stations du réseau.
Informations :
- issues des fichiers /etc/hosts, /etc/config, /etc/nsswitch.conf, etc.
- ou obtenues à l’aide de DNS ou NIS.
____
B.Cousin et C.Viho - © IFSIC - Université Rennes I 5
■ Programmation des communications ■
Serveur Client
socket() socket()
pseudo-connexion pseudo-connexion
read() write() recv() send() recvfrom() ou sendto() recvfrom() ou sendto() read() write() recv() send()
close() close()
UDP
____
B.Cousin et C.Viho - © IFSIC - Université Rennes I 6
■ Programmation des communications ■
Serveur Client
socket()
bind() socket()
listen() bind()
accept() connect()
Fork()
close() close()
TCP
____
B.Cousin et C.Viho - © IFSIC - Université Rennes I 7
■ Programmation des communications ■
3. Les primitives
domaine de protocole à
descripteur mode de
utiliser,
de la socket, communication : communication : (0 => le
-1 si erreur PF_UNIX ou SOCK_STREAM, système
PF_INET, etc. SOCK_DGRAM, choisit le
etc. protocole
voir liste dans : le mieux
<sys/socket.h> voir liste dans : adapté au
<sys/socket.h> mode).
voir dans :
<netinet/in.h>
Exemple : s=socket(PF_INET,SOCK_DGRAM,0);
____
B.Cousin et C.Viho - © IFSIC - Université Rennes I 8
■ Programmation des communications ■
____
B.Cousin et C.Viho - © IFSIC - Université Rennes I 9
■ Programmation des communications ■
____
B.Cousin et C.Viho - © IFSIC - Université Rennes I 10
■ Programmation des communications ■
____
B.Cousin et C.Viho - © IFSIC - Université Rennes I 11
■ Programmation des communications ■
Etablissement de la (pseudo-)connexion
____
B.Cousin et C.Viho - © IFSIC - Université Rennes I 12
■ Programmation des communications ■
la structure contenant
id. de la les informations en entrée et
0 ou -1 sortie la taille
socket recherchées de la structure
(param. d’entrée et de sortie)
____
B.Cousin et C.Viho - © IFSIC - Université Rennes I 13
■ Programmation des communications ■
nombre
nombre d’octets lus les données reçues maximum
sont mises dans la
0 si la connexion est fermée zone pointée par buf d’octets
ou -1 si erreur à lire
____
B.Cousin et C.Viho - © IFSIC - Université Rennes I 14
■ Programmation des communications ■
Similaire au “read()” :
____
B.Cousin et C.Viho - © IFSIC - Université Rennes I 15
■ Programmation des communications ■
____
B.Cousin et C.Viho - © IFSIC - Université Rennes I 16
■ Programmation des communications ■
0, si succès identificateur
-1, si échec de la socket
____
B.Cousin et C.Viho - © IFSIC - Université Rennes I 17
■ Programmation des communications ■
le nom de machine
0 ou -1 (tronqué à namelen car.)
est renvoyé dans name
____
B.Cousin et C.Viho - © IFSIC - Université Rennes I 18
■ Programmation des communications ■
NB : Toutes les structures de données utilisées et/ou renvoyées par ces fonctions sont définies dans
<netdb.h>
____
B.Cousin et C.Viho - © IFSIC - Université Rennes I 19
■ Programmation des communications ■
4. Conclusion
Il existe de nombreuses autres interfaces de programmation pour les communications. Par exemple :
- WinSock
. proposé pour IBM PC
- TLI (“transport level interface”)
. proposé par Unix System V
. implémentation par Stream
. compatible Socket
____
B.Cousin et C.Viho - © IFSIC - Université Rennes I 20
■ Programmation des communications ■
/etc/services
____
B.Cousin et C.Viho - © IFSIC - Université Rennes I 21
■ Programmation des communications ■
____
B.Cousin et C.Viho - © IFSIC - Université Rennes I 22