//
// Télé discussion sur Internet - Application Client
//
// <http://cui.unige.ch/java/exemples>
//


import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;

public class AppliClient extends Frame implements ActionListener
{
  public static final int PORT=45678;
  Socket s;
  PrintStream canalEcriture;  
  TextField entree;
  TextArea  visu;
  Button envoi,stop;
  Panel boutons;
  String Nom;

  public AppliClient(String n, String host)
  {
    super("client"+ " "+n);
    try {
      Nom = n;
      s = new Socket(host,PORT);       
      canalEcriture=new PrintStream(s.getOutputStream());

      // construction de l'interface graphique
      entree=new TextField();
      visu=new TextArea();
      visu.setEditable(false);
    
      this.setLayout(new BorderLayout());
      this.add("North",visu);
      this.add("Center",entree);
      entree.addActionListener(this);
      boutons=new Panel();
      envoi=new Button("envoi");
      stop =new Button("stop");
      boutons.add(envoi);
      envoi.addActionListener(this);
      boutons.add(stop);
      stop.addActionListener(this);
      this.add("South",boutons);
      this.pack();
      this.show();

      // la connexion est etablie :
      visu.setText("Connexion : "+ s.getInetAddress()+  " port : "+s.getPort());

      // lancement du processus accedant en lecture au socket
      Ecouteur ecoute=new Ecouteur(s,visu);

    } catch  (IOException e) {
      visu.setText(e.toString());
    }
  } // AppliClient
	 
  public void actionPerformed(ActionEvent e)
  {
    if ((e.getSource()==envoi) || (e.getSource()==entree)) {
      canalEcriture.println(Nom+">"+entree.getText());
      entree.setText("");
    }

    if (e.getSource()==stop)  {
      canalEcriture.println( Nom + ">FIN" );
      System.exit(0);
    }
  } // actionPerformed

  public static void main(String[] args)
  {
    Frame f= new AppliClient(args[0],args[1]);    
  } //main
  
} // class AppliClient

