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