cs_Bouki
Messages postés43Date d'inscriptionvendredi 30 août 2002StatutMembreDernière intervention11 décembre 2004
-
10 mars 2004 à 21:10
kirua12
Messages postés1155Date d'inscriptionsamedi 17 janvier 2004StatutMembreDernière intervention29 avril 2011
-
10 mars 2004 à 22:20
Salut,
J'ai un gros problème avec ce programme que j'ai pris d'un livre et adapté à mon cas. En fait il doit récupérer les entrées de l'utilisateur et les transmettre à tous les connectés. Voilà le programme :
Quand je le lance j'ai ça :
Serveur de chat lancé...
et dès que je lance telnet 127.0.0.1 4444 j'ai :
java.lang.NullPointerException
at TravailServeur.run(Serveur.java:41)
la ligne 41 étant :
Flux_entree = new BufferedReader(new InputStreamReader(IP.getInputStream()));
dans le contexte :
Fin_connection = false;
Flux_entree = new BufferedReader(new InputStreamReader(IP.getInputStream()));
while (Fin_connection == false)
voilà. Je suis vraiment désespérés sur le pb, g bo chercher je trouve pas, merci bcp à celui qui trouve.
@+
cs_Bouki
Messages postés43Date d'inscriptionvendredi 30 août 2002StatutMembreDernière intervention11 décembre 2004 10 mars 2004 à 21:43
Merci j'ai résolu un premier pb mais aparemment y'en a un deuxième !
Voilà le bout de code qui pose pb :
for (byte Nombre = 0; Nombre < IPS.length; Nombre++)
{
Flux_sortie = new PrintWriter(IPS[Nombre].getOutputStream(), true);
Flux_sortie.println("Utilisateur : " + Texte);
}
plus précisément cette ligne :
Flux_sortie = new PrintWriter(IPS[Nombre].getOutputStream(), true);
maintenant je peux lancer telnet, écrire un peu et quand je clique sur entrée j'ai ça :
java.lang.NullPointerException
at TravailServeur.run(Serveur.java:49)
comme erreur et telnet se ferme avec le programme.
Encore un pb avec un tableau ?
kirua12
Messages postés1155Date d'inscriptionsamedi 17 janvier 2004StatutMembreDernière intervention29 avril 20117 10 mars 2004 à 21:56
t'es sûr que tous les éléments du tableau sont initialisés ?
Quand tu fais une boucle sur un tableau soit on est sûr que tous les éléments sont non null ou mieux on teste si les élément sont null :
for (byte Nombre = 0; Nombre < IPS.length; Nombre++)
{
if(IPS[Nombre]!=null){
Flux_sortie = new PrintWriter(IPS[Nombre].getOutputStream(), true);
Flux_sortie.println("Utilisateur : " + Texte);
}
}
Sinon tu pourrais utiliser une List ce qui t'éviterait ces problèmes
kirua12
Messages postés1155Date d'inscriptionsamedi 17 janvier 2004StatutMembreDernière intervention29 avril 20117 10 mars 2004 à 22:10
j'ai un peu mieux regardé ton code et il y a quelques trucs que je trouve étrange.
Pourquoi ton thread serveur ne fait qu'écouter ce que dit le client plutôt de gérer le connexions ? tu récupères la socket pour le client dans le main alors que tu devrais le faire dans la boucle d'attente du serveur. Et ce que fait ton serveur devrait être dans un autre thread dédié au client (serveur multithreadé) sinon pourquoi avoir un tableau de socket dans le serveur si il ne peut gérer qu'un client ?
T'es sûr d'avoir bien repris l'exemple ?