CEG 3585CEG 3555 Tutorat 2 Hi ver 2013

  • Slides: 21
Download presentation
CEG 3585/CEG 3555 Tutorat 2 Hi ver 2013

CEG 3585/CEG 3555 Tutorat 2 Hi ver 2013

Architectur e TCP/IP Les applications sont développées avec le socket API (en Java les

Architectur e TCP/IP Les applications sont développées avec le socket API (en Java les classes Socket et Server. Socket) Adresse socket: Port TCP Adresse IP Les deux adresses sockets de chaque bout d’une connexion servent à identifier la connexion

La programmation “socket” Les sockets sont des interfaces qui peuvent communiquer entre elles en

La programmation “socket” Les sockets sont des interfaces qui peuvent communiquer entre elles en s’interconnectant à travers un réseau. Une communication de réseau peut se réaliser en échangeant des données de messages transmis entre des sockets. Les messages sont mis en queue au niveau de la socket transmetteur jusqu’à ce que le protocole du réseau les expédie. A leur arrivée, les messages sont mis en file au niveau de la socket réceptrice jusqu’à ce que processus de réception les traite.

La programmation socket Une socket Internet est identifiée par le système opératoire comme une

La programmation socket Une socket Internet est identifiée par le système opératoire comme une combinaison unique de : Protocole (TCP, UDP ou IP à l’état pur) Adresse socket locale Une adresse local IP Un numéro de port local Adresse socket du nœud distant (Uniquement pour de socket TCP établies) Une adresse éloignée IP Un numéro de port éloignée Donc dans le cas du TCP, les deux adresses sockets

La programmation socket Modèle Client-Serveur Un processus de logiciel client peut initier une session

La programmation socket Modèle Client-Serveur Un processus de logiciel client peut initier une session de communication pendant que le serveur attend des requêtes de clients. La plupart des applications d’entreprises écrites aujourd’hui utilisent le modèle Client-Serveur. Il en est de même pour les protocoles d’applications principales de l’internet tels que HTTP, SMTP, Telnet, DNS, etc.

Modèle client-serveur avec sockets en Java *L’objet Server. Socket serve à établir des connexions

Modèle client-serveur avec sockets en Java *L’objet Server. Socket serve à établir des connexions (reponds aux appels) pour ensuite laisser un objet Socket la gestion de chaque connexion Application Seveur Application Client Objet Socket 120 TCP IP IP Objet Server. Socket Objet Socket 4444 TCP IP Réseau Objet Socket 4444

La programmation socket Les commandes (Open-Read-Write-Close) : Avant que le processus d’un usager puisse

La programmation socket Les commandes (Open-Read-Write-Close) : Avant que le processus d’un usager puisse réaliser des opérations de réseautage, il lui faut déclarer une socket pour spécifier et obtenir les permissions de communication du réseau. Une fois la socket créée, le processus de l’’usager doit faire appel à d’autres commandes (Lire ou Ecrire) pour échanger des données. Une fois toutes les opérations de transfert de données complétées, le processus de l’usager doit utiliser la commande (Close) pour informer le système opératoire de la fin de la communication.

Java Socket – Connexion (Open) Client La classe Socket Cette classe réalise une socket

Java Socket – Connexion (Open) Client La classe Socket Cette classe réalise une socket client (appelée "socket"). public Socket(String adresse, int port) throws IOException adresse: - l’adresse IP (ou nom d’hôte). port – le numéro de port du serveur. Le port local sera déterminé par le system d’exploitation.

Java Socket – Connexion - Exemple Socket mon. Client; try { mon. Client =

Java Socket – Connexion - Exemple Socket mon. Client; try { mon. Client = new Socket("nom", numéro. Port); } // nom: nom d’hôte ou adresse IP catch (IOException e) { System. out. println(e); }

Java Socket – Connexion (Open) Serveur La classe Server. Socket Cette classe réalise une

Java Socket – Connexion (Open) Serveur La classe Server. Socket Cette classe réalise une socket serveur. Une socket serveur attend des requêtes (telle que la demande de connexion TCP) provenant du réseau. Elle réalise des opérations, en fonction de la requête, et possiblement retourne un résultat au demandeur. public Server. Socket(int port) throws IOException port - le numéro du port du serveur pour écouter et accepter les appels entrants. . public Socket accept() throws IOException Méthode de la classe Server. Socket: retourne la nouvelle Socket pour gérer la connexion.

Java Socket – Connexion - Exemple Du coté du serveur: La création du socket

Java Socket – Connexion - Exemple Du coté du serveur: La création du socket serveur : Server. Socket mon. Service; try { mon. Service = new Server. Socket(port. Number); } catch (IOException e) { System. out. println(e); } L’écoute du réseau se fait avec accept() Socket service. Socket = null; try { service. Socket = mon. Service. accept(); } catch (IOException e) { System. out. println(e); }

Socket java : Lecture class Buffered. Reader Cette classe permet une lecture d’un String

Socket java : Lecture class Buffered. Reader Cette classe permet une lecture d’un String Java. Méthode de la classe Socket: retourne une référence à un objet Input. Stream pour la lecture du socket. public Input. Stream get. Input. Stream() throws IOException L’objet retourné par devrait être encapsulé dans un objet Buffered. Reader qui offre un tampon de données, où le Reader réfère à l’objet Input. Stream. public Buffered. Reader(Reader in) Méthode de la classe Buffered. Reader: retourne la ligne suivante du texte de la chaine d’entrées. public final String read. Line() throws IOException

Java Socket - Lecture Dans le client et le serveur: Buffered. Reader input; try

Java Socket - Lecture Dans le client et le serveur: Buffered. Reader input; try { input = new Buffered. Reader( new Input. Stream. Reader( my. Socket. get. Input. Stream() ) } catch (IOException e) { System. out. println(e); } String message = input. read. Line(); // Bloque jusqu’à // l’arrivée de données

Java Socket - Écriture class Print. Writer(Output. Stream out) Cette classe permet une écriture

Java Socket - Écriture class Print. Writer(Output. Stream out) Cette classe permet une écriture d’un String Java à un socket Java. public Output. Stream get. Output. Stream() throws IOException Returns un référence à un object Output. Stream à envoyer au constructeur Print. Writer. public final void println(String s) throws IOException Méthode de la classe Print. Writer pour écrire un String Java, s. Notez que le println est nécessaire afin que la méthode read. Line() de la classe Buffered. Reader lise la ligne (la find de ligne est elevé par read. Line()).

Java Socket - Écrire Print. Writer output; try { output = new Print. Writer(

Java Socket - Écrire Print. Writer output; try { output = new Print. Writer( My. Client. get. Output. Stream()); } catch (IOException e) { System. out. println(e); } output. println(“une chaine de caractères”);

Java Socket – Fermeture (Close) public void close() throws IOException Une fois une socket

Java Socket – Fermeture (Close) public void close() throws IOException Une fois une socket fermée, elle n’est plus disponible à communiquer. Une nouvelle objet Socket doit être créé. Si un connexion est associée à ce socket, il s’en suit qu’il est aussi fermé. Cette méthode est présent dans la classe Socket et la classe Server. Socket. Cette méthode est aussi présente dans les objets Buffered. Reader et Print. Writer.

Java Socket - Close Du coté du client : try { output. close(); input.

Java Socket - Close Du coté du client : try { output. close(); input. close(); My. Client. close(); } catch (IOException e) { System. out. println(e); } Du coté du server (pour chaque connexion, i. e. Socket, voir du côté du client): try { service. Socket. close(); My. Service. close(); } catch (IOException e) {System. out. println(e); }

Application Chat (classes Java) Chat. Client. Socket. Manager Chat. Server. Socket. Manager Socket Server.

Application Chat (classes Java) Chat. Client. Socket. Manager Chat. Server. Socket. Manager Socket Server. Socket

Protocol pour Service Chat Application Chat Permet à plusieurs utilisateurs de tenir une conversation

Protocol pour Service Chat Application Chat Permet à plusieurs utilisateurs de tenir une conversation en-ligne via un réseau Serveur: un serveur permet une session de Chat Interroge chaque client pour un message Distribue à tous les clients les messages reçus Client: permet de se joindre à la session Chat Envoyer un message au serveur pour distributions aux clients Affiche messages reçus du serveur

Protocol pour Service Chat Protocol simple avec PDU ayant le format suivant Interrogation (polling):

Protocol pour Service Chat Protocol simple avec PDU ayant le format suivant Interrogation (polling): « POL » , envoyer par serveur pour demander messages. Acquittement: « ACKmessage » , réponse au POL envoyer par le client – message à distribuer à tous les clients. Acquittement négatif: « NAC » , réponse au POL envoyer par le client – pas de message à distribuer Message: « SELmessage » , message envoyer par serveur, à afficher au client.

Labo 2 Les classes pour l’application Chat sont fournies: Chat. Client, Chat. Server. Les

Labo 2 Les classes pour l’application Chat sont fournies: Chat. Client, Chat. Server. Les gabarits pour les classes Client. Socket. Manager et Server. Socket. Manager sont à compléter. Commencez avec le côté client