Java, objets, interfaces et Internet
TD 7

Un service d'application sur l'Internet

Le but de ce TP est de programmer les client et serveur d'un service de proverbes sur l'Internet. Le protocole d'application est un protocole simple d'interface

interface ProtocoleSimple {
  String réponse(String requête);
}
	
Dans une première version, le protocole du service pourra être implémenté par la classe suivante :
class Proverbes implements ProtocoleSimple {

  private static String[] proverbes = {"aaaa","bbbbb","cccccccc"};
  private static int num = 0;
  public String réponse(String requête) {
    String r = proverbes[num];
    num = (num+1) % proverbes.length;
    return r;
  }
}
	

Client TCP

Le client est invoqué sur la ligne de commande par
java proverbes.ClientTCP serveur
	

Il se connecte à la machine serveur sur le port 2001 et utilise 4 flots : un BufferedReader sur l'entrée standard un PrintWriter en écriture sur la connexion (qui ne servent pas pour le moment), un BufferedReader en lecture sur la connexion et enfin System.out.

Serveur TCP (itératif)

Le serveur est invoqué sur la ligne de commande par
java proverbes.ServeurTCP &
	

Il crée un ServerSocket en écoute sur le port 2001 et un ProtocoleSimple pour répondre aux demandes de proverbes. Il crée un Socket à chaque demande de connexion faite sur ce port, puis utilise 2 flots : un BufferedReader en lecture sur la connexion un PrintWriter en écriture sur la connexion et un BufferedReader en lecture sur la connexion. Le fonctionnement de ce service est implémenté par la ligne (car la requête est une chaîne vide pour le moment):

outLine = protocole.réponse(null);
	

Un protocole plus élaboré

Modifier le protocole et le client de manière à ajouter un autre type de requête : l'ajout d'un proverbe dans la "base de proverbes" du serveur. Dans ce cas, le client sera invoqué de la façon suivante

java proverbes.Client serveur -a En mai fais ce qu'il te plait
	

Client UDP

Le client est invoqué sur la ligne de commande par
java proverbes.ClientUDP serveur
	

Le client construit un DatagramSocket, puis un DatagramPacket à partir d'un tableau d'octets (qui provient de la chaîne de caractères de la requête), de sa longueur, de l'adresse destinataire et du port destinataire et envoie ce paquet>

Serveur UDP


[Cours Java]

Mise à jour :