SOCKETs en JAVA

Bonjour,
je suis un vrai débutant, et j'essaye d'apprendre le fontionnement des sockets
voilà, j'essaye d'exécuter l'exemple de fin de page (qui est un exemple) du lien:

http://queinnec.perso.enseeiht.fr/Ens/Chat/socket-java.html
mais lorsque je lance le serveur la compilation tourne infiniment (je crois que C normal)
et ensuite je lance le client et j'ai ce résultat:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at socket.Client.main(Client.java:17)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)

je comprends pas

merci d'avance
Configuration: Windows XP
Firefox 3.0.1

3 réponses

  1. Socket socket = new Socket(args[0], port);

    tu lances bien ton code en invite de commande avec un argument?
    je dirais que tu dois mettre l'adresse du server mais je n'en suis pas sur

    donc dans l'invite de commande tu vas jusqu'au dossier ou se trouve ton programme et tu fais:

    NomDuProg adresseip (localhost si c'est sur la meme machine
    1. regarde du coté de la ligne 17 ton code car en fait tu essaye d'inserer une valeur dans un tableau mais hors du tableau par exemble
      int A[]=new int[4];
            for (int i=0; i<=4; i++) A[i]=i;

      n'est pas correct car tu depasses de 1 la limite du tableau

      sinon fais voir une partie de ton code
      1. Le programme du serveur

        import java.io.*;
        import java.net.*;

        public class Serveur {
        static final int port = 8080;

        public static void main(String[] args) throws Exception {
        ServerSocket s = new ServerSocket(port);
        Socket soc = s.accept();

        // Un BufferedReader permet de lire par ligne.
        BufferedReader plec = new BufferedReader(
        new InputStreamReader(soc.getInputStream())
        );

        // Un PrintWriter possède toutes les opérations print classiques.
        // En mode auto-flush, le tampon est vidé (flush) à l'appel de println.
        PrintWriter pred = new PrintWriter(
        new BufferedWriter(
        new OutputStreamWriter(soc.getOutputStream())),
        true);

        while (true) {
        String str = plec.readLine(); // lecture du message
        if (str.equals("END")) break;
        System.out.println("ECHO = " + str); // trace locale
        pred.println(str); // renvoi d'un écho
        }
        plec.close();
        pred.close();
        soc.close();
        }
        }

        2.2 Le programme du client

        import java.io.*;
        import java.net.*;
        /** Le processus client se connecte au site fourni dans la commande
        * d'appel en premier argument et utilise le port distant 8080.
        */
        public class Client {
        static final int port = 8080;

        public static void main(String[] args) throws Exception {
        Socket socket = new Socket(args[0], port);
        System.out.println("SOCKET = " + socket);

        BufferedReader plec = new BufferedReader(
        new InputStreamReader(socket.getInputStream())
        );

        PrintWriter pred = new PrintWriter(
        new BufferedWriter(
        new OutputStreamWriter(socket.getOutputStream())),
        true);

        String str = "bonjour";
        for (int i = 0; i < 10; i++) {
        pred.println(str); // envoi d'un message
        str = plec.readLine(); // lecture de l'écho
        }
        System.out.println("END"); // message de terminaison
        pred.println("END") ;
        plec.close();
        pred.close();
        socket.close();
        }
        }