import java.io.*;import java.net.*;import javax.swing.*;import com.sun.corba.se.impl.orbutil.ObjectWriter;import java.util.ArrayList;import java.util.Collections;import java.io.Serializable;public class Serveur { static ArrayList<Partie> lesParties; static PrintWriter pw[]= new PrintWriter[2]; static BufferedReader br[]= new BufferedReader[2]; static Socket soc[]= new Socket[2]; public static void main(String[] args) { //déclarations ServerSocket ss; //ObjectOutputStream oos[]=new ObjectOutputStream[2] ; Joueur lesJoueurs[]; Joueur unJoueur; int nbJoueur= 2; boolean partieEnCours=true; int nbCoupJouer=0; //creation d'objets nécessaires try{//CREATION DU SERVEUR ss = new ServerSocket(3000,2); while(true){ //Initialise les données Partie nouvPartie; nbCoupJouer=0; lesJoueurs =new Joueur[2]; //START// for(int i=0;i<nbJoueur;i++){ //CREATION DES SOCKETS soc[i] = ss.accept(); pw[i] = new PrintWriter(new BufferedWriter(new OutputStreamWriter(soc[i].getOutputStream())), true); br[i] = new BufferedReader(new InputStreamReader(soc[i].getInputStream( ) ) ); //oos[i]= new ObjectOutputStream(soc[i].getOutputStream());//SI I==0 ALORS C'EST LE PREMIER JOUEURS ! if (i==0){// PREND LE NOM, LE PTICH DANS LE TABLEAU ET LUI DONNE SON INDEX JOUEUR, VU QUIL EST FIRST // SON INDEX C 1 unJoueur= new Joueur(br[i].readLine()); lesJoueurs[i]= unJoueur; lesJoueurs[i].setNoJoueur(i+1); }else{// DEUXIEME JOUEUR, PAREIL QUE LE PREMIER unJoueur= new Joueur(br[i].readLine()); lesJoueurs[i]= unJoueur; lesJoueurs[i].setNoJoueur(i+1); //Donne les noms de leur adversaire aux joueurs pw[i-1].println(lesJoueurs[i].getNomJoueur()); pw[i].println(lesJoueurs[i-1].getNomJoueur()); //Donne leur numéro de joueur, celui-ci defini qui //commence la partie //PREND LE TABLEAU DE JOUEURS ET LANCE UN TRUC QUI ENVOIT LE NO DE JOUEUR // le ""+ au debut c'est une convertion integer, CF Andrei Moldoveanu, le skillé for (Joueur j :lesJoueurs){ for (int x = 0;x<nbJoueur;x++){ pw[x].println(""+j.getNoJoueur()); } } //ICI COMMENCE LA PARTIE ! LA SUITE NEST PAS IMPORTANT POUR L'INSTANT do{ for(int z=nbJoueur-1;0<z;z--){ pw[z].println(br[z-1].readLine()); pw[z-1].println(br[z].readLine()); nbCoupJouer++; } }while(partieEnCours); try{ nouvPartie = new Partie(lesJoueurs[i-1].getNomJoueur(),lesJoueurs[i].getNomJoueur(),br[i].readLine(),nbCoupJouer); // oos[i].writeObject(lesParties); }catch(Partie.ScoreImpossible err){ System.out.println("Exception ScoreImpossible: le score n'est pas possible."); } } //communication et traitement : Prend le nom et l'envoie aux client + le jeton //fermetures /*for(int i=0;i<2;i++){ soc[i].close(); }*/ //ss.close(); -- Boucle infini, donc on ne ferme pas le serveur. } } }catch (ConnectException e){ System.out.println(e.toString()+ " Erreur de communication, connection refusée."); }catch (IOException e){ System.out.println(e.toString()+ " Erreur de communication, côté serveur."); System.exit(0); } }}