SOCKETs en JAVA

Fermé
zanu - 13 août 2008 à 18:46
neofenix Messages postés 145 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 11 mars 2010 - 14 août 2008 à 14:02
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
A voir également:

3 réponses

personne pour me répondre??
:((
0
neofenix Messages postés 145 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 11 mars 2010 2
14 août 2008 à 11:55
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
0
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();
}
}
0
neofenix Messages postés 145 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 11 mars 2010 2
14 août 2008 à 14:02
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
0