// 
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());}
  } // constructeur 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
}