EchoTCPClient.java

package fr.umlv.ji.tcp;
import java.net.*;
import java.io.*;
/**
 * Classe d'un client TCP pour le protocole Echo (RFC 862).
 */
public class EchoTCPClient {
  /** Port réservé pour le protocole Echo. */
  public final static int ECHO_PORT = 7;
  /** Envoie d'un message vers un serveur Echo et reçoit la réponse. */
  public static void main(String[] args) throws IOException {
    // Vérification de présence des arguments sur la ligne de commande
    if (args.length!=2) {
      System.err.println("Usage:"
                   +" java fr.umlv.ji.tcp.EchoTCPClient <server> <msg>");
      System.exit(1);
    }
    // Création de l'objet socket (connexion au serveur)
    Socket s = new Socket(args[0],ECHO_PORT);
    System.out.println("Connexion établie entre :");
    System.out.println("\t"+s.getInetAddress()+":"+s.getPort());
    System.out.println("et \t"+s.getLocalAddress()+":"+s.getLocalPort());
    System.out.println("Tailles des tampons :");
    System.out.println("\tÉmission : "+s.getSendBufferSize());
    System.out.println("\tRéception : "+s.getReceiveBufferSize());
    // Récupération d'un flot en écriture sur la connexion
    PrintStream out = new PrintStream(s.getOutputStream());
    out.println(args[1]);
    // Récupération d'un flot en lecture sur la connexion
    InputStreamReader tmp = new InputStreamReader(s.getInputStream());
    LineNumberReader in = new LineNumberReader(tmp);
    // Affichage de ce qui est lu sur la connexion
    System.out.println(in.readLine());
    // Fermeture de la connexion
    s.close();
  }
}