SOCKETs en JAVA
zanu
-
neofenix Messages postés 145 Date d'inscription Statut Membre Dernière intervention -
neofenix Messages postés 145 Date d'inscription Statut Membre Dernière intervention -
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
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:
- SOCKETs en JAVA
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
3 réponses
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
n'est pas correct car tu depasses de 1 la limite du tableau
sinon fais voir une partie de ton code
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
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();
}
}
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();
}
}
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
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