L`API – Socket en JAVA

Transcription

L`API – Socket en JAVA
API Socket
L’API – Socket en JAVA
Cédric Cocquebert
_______________________________________________________________________________________________________________
doc-SocketsJavaCC.doc
1
CC le 27/11/2003
API Socket
1- Introduction
• L'API (Application Programming Interface) "sockets" est une bibliothèque de
Classes de communication entre machines sur TCP/IP contenu dans le
paquetage java.net
• Le mode connecté correspond au protocole TCP. Le protocole établit une
connexion virtuelle et se charge alors de maintenir l'intégrité de la
communication et de gérer les erreurs de transmission.
• Le mode non connecté correspond au protocole UDP. Ce protocole fait
l'envoi au mieux ("best effort"). C'est à l'application de maintenir la qualité
de la transmission. UDP est une "couche mince" au-dessus de IP.
_______________________________________________________________________________________________________________
doc-SocketsJavaCC.doc
2
CC le 27/11/2003
API Socket
2- Notion de port
Un service est rendu par un programme serveur sur une machine. Ce service est
accessible à travers un réseau TCP/IP par un port. Un port est identifié par un entier
(16 bits).
• Les ports numérotés de 0 à 511 sont les "well known ports" de l'architecture
TCP/IP. Ils donnent accès aux services standard de l'interconnexion: transfert
de fichiers (FTP port 21), terminal (Telnet port 23), courrier (SMTP port 25),
serveur web (HTTP port 80)
• De 512 à 1023, on trouve les services Unix.
• Au delà, (1024 ...) ce sont les ports "utilisateurs" disponibles pour placer un
service applicatif quelconque.
• Un service est souvent connu par un nom (FTP, ...). La correspondance entre
nom et numéro de port est donnée par le fichier /etc/services qui est
consultable en programmation par les fonctions suivantes:
_______________________________________________________________________________________________________________
doc-SocketsJavaCC.doc
3
CC le 27/11/2003
API Socket
Classe Socket:
Constructeur :
Socket (String host, int port) :
creation du socket sur le port et la machine hôte spécifiés.
Méthodes :
close() :
ferme le socket.
OutputStream getOutputStream() :
revoie un flux de sortie pour cet socket.
IutputStream getIutputStream() :
revoie un flux de d’entrée pour cet socket.
_______________________________________________________________________________________________________________
doc-SocketsJavaCC.doc
4
CC le 27/11/2003
API Socket
Classe ServerSocket:
Constructeur :
ServerSocket (int port) :
creation du socket Serveur sur le port spécifié.
Méthodes :
Idem que Socket
Socket accept() :
Ecoute si une connexion est demandée pour cet socket et l’accepte.
_______________________________________________________________________________________________________________
doc-SocketsJavaCC.doc
5
CC le 27/11/2003
API Socket
3- La résolution de nom et d'adresse
Mise en œuvre à travers un service DNS ou un fichier local (/etc/hosts) ou
Yellow Pages.
Classe InetAddress
Les applications doivent
utiliser les méthodes getLocalHost,
getByName, ou getAllByName pour construire une nouvelle instance de
InetAddress.
Méthodes :
String getHostName() :
Renvoie le nom de la machine hôte de cette adresse.
_______________________________________________________________________________________________________________
doc-SocketsJavaCC.doc
6
CC le 27/11/2003
API Socket
4- Les Sockets: mise en œuvre en mode non connecté
Le protocole
•
Côté serveur:
⇒créer un socket : new ServeurSocket(…)
⇒ définir les I/O
getOutputStream() et
getInputStream()
⇒recevoir des paquets : in.readLine()
⇒envoyer des paquets : out.println()
⇒... protocole applicatif ...
⇒terminer la communication : close()
•
Côté client:
⇒créer un socket : new socket(…)
⇒définir les I/O
getOutputStream() et
getInputStream()
⇒envoyer des paquets : out.println()
⇒recevoir des paquets : in.readLine()
⇒... protocole applicatif ...
⇒terminer la communication : close()
_______________________________________________________________________________________________________________
doc-SocketsJavaCC.doc
7
CC le 27/11/2003
API Socket
5- Les Sockets: mise en œuvre en mode connecté
Le protocole
•
Côté serveur:
⇒créer un socket : new ServeurSocket(…)
⇒attendre les demandes de connexion
entrantes: accept()
⇒ définir les I/O
getOutputStream() et
getInputStream()
⇒recevoir des paquets : in.readLine()
⇒envoyer des paquets : out.println()
⇒... protocole applicatif ...
⇒terminer la communication : close()
•
Côté client:
⇒créer un socket : new socket(…)
⇒définir les I/O
getOutputStream() et
getInputStream()
⇒envoyer des paquets : out.println()
⇒recevoir des paquets : in.readLine()
⇒... protocole applicatif ...
⇒terminer la communication : close()
_______________________________________________________________________________________________________________
doc-SocketsJavaCC.doc
8
CC le 27/11/2003

Documents pareils