• Aucun résultat trouvé

Machine du serveur int port

N/A
N/A
Protected

Academic year: 2022

Partager "Machine du serveur int port"

Copied!
4
0
0

Texte intégral

(1)

Fichier EchoClient.java

import java.io.*;

import java.net.*;

public class EchoClient {

// Variables de classe constantes : port et machine par defaut public static final int DEFAULT_PORT = 6789;

public static final String DEFAULT_HOST = "localhost";

public static final int DEFAULT_LINGER_TIME = 5;

// Variables d’instance (etat de EchoClient)

String host = null; // Machine du serveur

int port; // No de port du serveur (no de service) int lingerTime; // Tps d’expiration de socket apres fermeture Socket s = null; // Reference a la socket client

DataInputStream sin = null; // Flux en provenance du serveur PrintStream sout = null; // Flux a destination du serveur DataInputStream in = null; // Flux associe au clavier

//--- // METHODE main() : POINT D’ENTREE DU PROGRAMME CLIENT //--- public static void main(String[] args) {

// Le client

EchoClient client = null;

// Tests d’arguments et appel de constructeurs switch(args.length) {

case 0 : client = new EchoClient();

break;

case 1 : if (args[0].equals("?")) { usage();

System.exit(0);

}

client = new EchoClient(args[0]);

break;

case 2 : client = new EchoClient(args[0], args[1]);

break;

case 3 : client = new EchoClient(args[0], args[1], args[2]);

break;

default : usage();

throw new IllegalArgumentException();

}// switch()

// Creation d’objets utilitaires et traitement du service 1

(2)

client.initSocketAndStreams();

client.service();

}// main()

//--- // CONSTRUCTEURS //--- public EchoClient() {

host = new String(DEFAULT_HOST);

port = DEFAULT_PORT;

lingerTime = DEFAULT_LINGER_TIME; // Temps d’expiration }

public EchoClient(String theHost) { host = new String(theHost);

try {

// Test de validite de l’adresse

InetAddress dummy = InetAddress.getByName(theHost);

} catch (UnknownHostException e) {

System.err.println("Machine " + theHost + " inconnue.");

System.err.println("Essai avec " + DEFAULT_HOST);

host = new String(DEFAULT_HOST);

}

port = DEFAULT_PORT;

lingerTime = DEFAULT_LINGER_TIME;

}

public EchoClient(String theHost, String thePortString) { this(theHost);

try {

port = Integer.parseInt (thePortString);

} catch (NumberFormatException e) {

System.err.println("Numero de port invalide. " + DEFAULT_PORT + " Utilise.");

port = DEFAULT_PORT;

}

lingerTime = DEFAULT_LINGER_TIME;

}

protected EchoClient(String theHost, String thePortString, String theLingerTimeString) { this(theHost, thePortString);

try {

lingerTime = Integer.parseInt (theLingerTimeString);

} catch (NumberFormatException e) { lingerTime = DEFAULT_LINGER_TIME;

2

(3)

} }

//--- // FONCTIONS D’UTILISATION ET D’INITIALISATION //--- static void usage() {

System.out.println("Utilisation : " +

"java EchoClient <hostname> [<port>] [<tempsExpir>]");

System.exit(0);

}

public void initSocketAndStreams() {

try {

// Creer une socket pour se connecter a la machine et au port s = new Socket(host, port);

// Mise du temps d’expiration a la valeur specifiee // Voir la mise en garde dans le polycopie en cas reel if (lingerTime > 0)

s.setSoLinger(true, lingerTime);

else

s.setSoLinger(false, 0);

// Creer les flux pour lire et ecrire des lignes de texte // de et vers cette socket.

sin = new DataInputStream(s.getInputStream());

sout = new PrintStream(s.getOutputStream());

// Creer un flux pour lire des lignes de l’entree standard // (par defaut le clavier)

in = new DataInputStream(System.in);

// Signaler que l’on est connecte

System.out.println("Connecte a " + s.getInetAddress() + ":"+ s.getPort());

} catch (IOException e) { System.err.println(e);

try { if (s != null) s.close(); } catch (IOException e2) { ; } }

}

//--- // TRAITEMENT DU SERVICE //--- public void service() {

try {

String line;

3

(4)

while(true) {

// afficher une invite

System.out.print("EchoClient > ");

System.out.flush();

// lire une ligne de stdin; verifier l’EOF line = in.readLine();

if ((line == null) || (line.equals("quit"))) break;

// L’envoyer au serveur sout.println(line);

// Lire une ligne du serveur line = sin.readLine();

// Verifier si la connexion est fermee (par EOF) if (line == null) {

System.out.println("Connection fermee par le serveur.");

break;

}

// Puis ecrire la ligne sur stdout System.out.println(line);

}// while(true)

} catch (IOException e) { System.err.println(e); } // Etre sur de toujours fermer la socket

finally {

try { if (s != null) s.close(); } catch (IOException e2) { ; } }

}// service() }// class EchoClient

4

Références

Documents relatifs

Constructeur : Socket (String host, int port) cr´ eation du socket vers le port et la machine hˆ ote sp´ ecifi´ es. M´

 La partie client crée une socket pour accéder à la couche UDP et la lie sur un port quelconque..  Le serveur se met en attente de réception de paquet sur

 Le client crée une socket liée à un port quelconque puis appelle un service pour ouvrir une connexion avec le serveur sur sa socket d'écoute.  Du coté du serveur, le

 Du coté du serveur, le service d'attente de connexion retourne une socket de service (associée à un port quelconque).  C'est la socket qui permet de dialoguer avec

● Dans le cas d'un client, le choix du numéro de port d'attachement de la socket n'a pas d'importance. – il sera connu par le serveur à la réception du datagramme émis par

Un nombre entier naturel non nul n est dit parfait si la somme des diviseurs de n qui sont supérieurs ou égaux à 1 est égale au double de n. Par exemple, 6 est un

On fait cela tant qu’il y a plusieurs ´el´ements dans le tableau.. Si le tableau est de taille impaire, son ´el´ement central

On oublie donc les s ` a la fin de vingt, cent, million