import java.net.Socket;
import java.net.ServerSocket;
import java.io.DataInputStream;
import java.io.PrintStream;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.net.*;

class ClientDialogue implements Runnable {//

	int lport;
	String login,lue;
	String lhost;
	BufferedReader clavier=new BufferedReader(new InputStreamReader(System.in));
	public static Socket serveurM;
	BufferedReader depuisServeurM;
	public static PrintStream versServeurM;


	public ClientDialogue(String lhost,int lport, String rhost,int sport,String login) {

		try {
			this.lhost=lhost;
			this.lport=lport;
			this.login=login;
			serveurM=new Socket(rhost,sport);
			depuisServeurM = new BufferedReader(new InputStreamReader(serveurM.getInputStream()));
			versServeurM = new PrintStream(serveurM.getOutputStream());
		} catch (IOException e) {
			System.out.println("Pb dans le ServeurDialogue");
			try { serveurM.close(); } catch (IOException ee) {System.out.println("Pb dans le close()");}
		}
		new Thread(this).start();//on transforme cette instance en thread => appel de la fonction run().
	}

	public void run() {

		String lue="",ip,temp;
		int port;
		try {

			String auth=login+":"+lhost+">"+lport;
			versServeurM.println(auth);

			while (lue != "FIN"){

				lue=depuisServeurM.readLine(); //lit les "nvelles connexions"
				ip = lue.substring(lue.indexOf(":")+1,lue.indexOf(">"));
				temp = (lue.substring(lue.indexOf(">")+1));
				login=lue.substring(0,lue.indexOf(":"));
				port=Integer.parseInt(temp);
				System.out.println(login+" vient de se connecter au chat");
				Serveur.connecClient(port,ip);
			}
		}//try
		catch(Exception e) {
// 		serveurM.close();
// 		try { serveurM.close(); } catch (Exception ex){ System.out.println("Erreur dans ServeurM.close()="+ex); }
// 		System.out.println("Erreur dans le mini dialog ac le serveur"+e);
		}
	}

	
	public static void stop(String login) {
			versServeurM.println("deco-" + login);
 			try { 
				serveurM.close();
				Serveur.stopClient(login); 
			}
 			catch (Exception e){ System.out.println("Erreur dans ServeurM.close()="+e); }
	}
}
