Probleme d'unreachable statement

marsrepart Messages postés 18 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 23 janvier 2003 - 27 déc. 2002 à 22:43
marsrepart Messages postés 18 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 23 janvier 2003 - 2 janv. 2003 à 13:57
hello tout le monde.. je suis un newbies....
Voila, je dois faire un client/serveur (style FTP)java qui dialogue par le biais de socket (normal .. je sais)
le probleme vient à la compilation. le compilateur me dit que ma chaine de caractères ne sera jamais "atteinte"... est-ce que celà vient du fait que j'utilsie des flux d'ES et qu'il faut une temporisation ? ca j'en sais rien du tout, en tout k ,j'ai vraiment besoni d'aide....
merci à ceux qui tenteront de se pancher sur ce pas beau code (et aux autres aussi ;))

tchussssssss

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

public class Client extends Thread{
private Socket _sockClient;
private static int DEFAUT = 3000 ;
private DataOutputStream _dout ;
private DataInputStream _din ;

public Client (String machine, int port){
try{
_sockClient = new Socket(machine,port);
_dout = new DataOutputStream (_sockClient.getOutputStream());
_din = new DataInputStream (_sockClient.getInputStream());
}
catch (IOException e){
System.err.println(e);
try {_sockClient.close();}
catch (IOException ex){}
}

}

public String lectureClavier(){
BufferedReader fr = new BufferedReader(new InputStreamReader (System.in));
String reponse ="" ;
try {
reponse = fr.readLine();
}
catch (IOException e){
System.out.println("Erreur dans la lecture au clavier");
System.exit(1);
}
return reponse;
}

public void run(){
String reponse ="1";
String sTemp="";
boolean espace2 = false ;
int j = 0 ;
String requete ="";
try{

String s = lectureClavier();
while ((!espace2) && j<s.length()){

if (!s.substring(j,j+1).equals(" ")) {
requete +=s.charAt(j);
j++;
}
else espace2 = true;
}

// on vient de recuperer la commande de la requete
// On va effectuer des tests

System.out.println("la chaine de caractere rentree est : "+s);
if (requete.equals("req")) {
System.out.println("On a rentre la commande pwd");
requete = 1+"";
byte[] buffer= requete.getBytes();
_dout.write(buffer,0,buffer.length);
reponse = "";
for(;;) {
reponse += (char) _din.readByte();
System.out.println(reponse);
}
//ch = reponse.charAt(0);

//if (reponse.length()==0) sTemp="1";
sTemp = reponse.substring(0,1); // <-- PROBLEME ICI
if (!sTemp.equals("0")) System.out.println("Erreur dans la commande pwd");
else {
int i =2;
int nbreCarac ;
String temp =""+reponse.charAt(2);
boolean espace = false ;
while((i<(reponse.length()-8)) && (!espace)) {
i++;
if (reponse.substring(i,i+1).equals(" ")) espace = true;
else temp += reponse.charAt(i);
}
nbreCarac = Integer.parseInt(temp);
for (int k = 0 ;k<nbreCarac; k++)
System.out.print((char) reponse.charAt(i+k+1));
System.out.println();
}
}
if (requete.equals("cd")) {
System.out.println("On a rentre la commande cd");
requete = 2 +" "+ (s.length()-3)+ " ";
while (j<requete.length()) {
requete += s.charAt(j);
j++;
}
byte[] buffer = requete.getBytes();
_dout.write(buffer,0,buffer.length);
reponse ="";
for (;;)
reponse += (char) _din.readByte();
sTemp = reponse.substring(0,1); // <-- PROBLEME ICI
if (sTemp.equals("1")) System.out.println("La commande cd a mal ete rentree");
if (sTemp.equals("2")) System.out.println("L'operation n'est pas permise");
if (sTemp.equals("3")) System.out.println("Le repertoire est inexistant");
if (sTemp.equals("0")) {}

}

}
catch (IOException e){
System.err.println(e);
try {_sockClient.close();}
catch (IOException ex){}
}
}

public static void main (String [] args){
if ((args.length>2) | (args.length==0)) {
System.out.println("Erreur dans les arguments du client");
System.exit(1);
}
int port ;
try {
port = Integer.parseInt(args[1]);
}
catch (NumberFormatException e){
port = DEFAUT;
}
Client c = new Client(args[0],port) ;
c.start();
}

}
A voir également:

16 réponses

JHelp Messages postés 261 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 6 octobre 2005 11
28 déc. 2002 à 08:25
Tu as oublier de mettre des {} pour ton for(;;)
ilfait donc indifiniment seulement la ligne qui suit et les autres ne seront jamais atteintes.
Regarde la correction si dessous.
Je voulais également te signaler que le ou logique en java c'est || et non |, le | et le ou binaire (bit à bit pour deux entiers)

JHelp

> hello tout le monde.. je suis un newbies....
> Voila, je dois faire un client/serveur (style FTP)java qui dialogue par le biais de socket (normal .. je sais)
> le probleme vient à la compilation. le compilateur me dit que ma chaine de caractères ne sera jamais "atteinte"... est-ce que celà vient du fait que j'utilsie des flux d'ES et qu'il faut une temporisation ? ca j'en sais rien du tout, en tout k ,j'ai vraiment besoni d'aide....
> merci à ceux qui tenteront de se pancher sur ce pas beau code (et aux autres aussi ;))
>
> tchussssssss
>
>
> import java.io.*;
> import java.net.*;
>
>
> public class Client extends Thread{
> private Socket _sockClient;
> private static int DEFAUT = 3000 ;
> private DataOutputStream _dout ;
> private DataInputStream _din ;
>
>
>
> public Client (String machine, int port){
> try{
> _sockClient = new Socket(machine,port);
> _dout = new DataOutputStream (_sockClient.getOutputStream());
> _din = new DataInputStream (_sockClient.getInputStream());
> }
> catch (IOException e){
> System.err.println(e);
> try {_sockClient.close();}
> catch (IOException ex){}
> }
>
> }
>
>
> public String lectureClavier(){
> BufferedReader fr = new BufferedReader(new InputStreamReader (System.in));
> String reponse ="" ;
> try {
> reponse = fr.readLine();
> }
> catch (IOException e){
> System.out.println("Erreur dans la lecture au clavier");
> System.exit(1);
> }
> return reponse;
> }
>
>
> public void run(){
> String reponse ="1";
> String sTemp="";
> boolean espace2 = false ;
> int j = 0 ;
> String requete ="";
> try{
>
> String s = lectureClavier();
> while ((!espace2) && j<s.length()){
>
> if (!s.substring(j,j+1).equals(" ")) {
> requete +=s.charAt(j);
> j++;
> }
> else espace2 = true;
> }
>
> // on vient de recuperer la commande de la requete
> // On va effectuer des tests
>
>
> System.out.println("la chaine de caractere rentree est : "+s);
> if (requete.equals("req")) {
> System.out.println("On a rentre la commande pwd");
> requete = 1+"";
> byte[] buffer= requete.getBytes();
> _dout.write(buffer,0,buffer.length);
> reponse = "";
> for(;;) {
> reponse += (char) _din.readByte();
> System.out.println(reponse);
> }
> //ch = reponse.charAt(0);
>
> //if (reponse.length()==0) sTemp="1";
> sTemp = reponse.substring(0,1); // <-- PROBLEME ICI
> if (!sTemp.equals("0")) System.out.println("Erreur dans la commande pwd");
> else {
> int i =2;
> int nbreCarac ;
> String temp =""+reponse.charAt(2);
> boolean espace = false ;
> while((i<(reponse.length()-8)) && (!espace)) {
> i++;
> if (reponse.substring(i,i+1).equals(" ")) espace = true;
> else temp += reponse.charAt(i);
> }
> nbreCarac = Integer.parseInt(temp);
> for (int k = 0 ;k<nbreCarac; k++)
> System.out.print((char) reponse.charAt(i+k+1));
> System.out.println();
> }
> }
> if (requete.equals("cd")) {
> System.out.println("On a rentre la commande cd");
> requete = 2 +" "+ (s.length()-3)+ " ";
> while (j<requete.length()) {
> requete += s.charAt(j);
> j++;
> }
> byte[] buffer = requete.getBytes();
> _dout.write(buffer,0,buffer.length);
> reponse ="";
> for (;;)
{
> reponse + = (char) _din.readByte();
> sTemp = reponse.substring(0,1); // <-- PROBLEME ICI
> if (sTemp.equals("1")) System.out.println("La commande cd a mal ete rentree");
> if (sTemp.equals("2")) System.out.println("L'operation n'est pas permise");
> if (sTemp.equals("3")) System.out.println("Le repertoire est inexistant");
> if (sTemp.equals("0")) {}
>
> }
>
> }
> catch (IOException e){
> System.err.println(e);
> try {_sockClient.close();}
> catch (IOException ex){}
> }
}
> }
>
>
>
>
>
>
> public static void main (String [] args){
> if ((args.length>2) | (args.length ==0)) {
> System.out.println("Erreur dans les arguments du client");
> System.exit(1);
> }
> int port ;
> try {
> port = Integer.parseInt(args[1]);
> }
> catch (NumberFormatException e){
> port = DEFAUT;
> }
> Client c = new Client(args[0],port) ;
> c.start();
> }
>
>
> }
>
>
>
>
>
>
0
JHelp Messages postés 261 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 6 octobre 2005 11
28 déc. 2002 à 08:29
Oupss.. :blush) petite erreure de ma part, la réponse est plutöt :

> > import java.io.*;
> > import java.net.*;
> >
> >
> > public class Client extends Thread{
> > private Socket _sockClient;
> > private static int DEFAUT = 3000 ;
> > private DataOutputStream _dout ;
> > private DataInputStream _din ;
> >
> >
> >
> > public Client (String machine, int port){
> > try{
> > _sockClient = new Socket(machine,port);
> > _dout = new DataOutputStream (_sockClient.getOutputStream());
> > _din = new DataInputStream (_sockClient.getInputStream());
> > }
> > catch (IOException e){
> > System.err.println(e);
> > try {_sockClient.close();}
> > catch (IOException ex){}
> > }
> >
> > }
> >
> >
> > public String lectureClavier(){
> > BufferedReader fr = new BufferedReader(new InputStreamReader (System.in));
> > String reponse ="" ;
> > try {
> > reponse = fr.readLine();
> > }
> > catch (IOException e){
> > System.out.println("Erreur dans la lecture au clavier");
> > System.exit(1);
> > }
> > return reponse;
> > }
> >
> >
> > public void run(){
> > String reponse ="1";
> > String sTemp="";
> > boolean espace2 = false ;
> > int j = 0 ;
> > String requete ="";
> > try{
> >
> > String s = lectureClavier();
> > while ((!espace2) && j<s.length()){
> >
> > if (!s.substring(j,j+1).equals(" ")) {
> > requete +=s.charAt(j);
> > j++;
> > }
> > else espace2 = true;
> > }
> >
> > // on vient de recuperer la commande de la requete
> > // On va effectuer des tests
> >
> >
> > System.out.println("la chaine de caractere rentree est : "+s);
> > if (requete.equals("req")) {
> > System.out.println("On a rentre la commande pwd");
> > requete = 1+"";
> > byte[] buffer= requete.getBytes();
> > _dout.write(buffer,0,buffer.length);
> > reponse = "";
> > for(;;) {
> > reponse += (char) _din.readByte();
> > System.out.println(reponse);
> > }
> > //ch = reponse.charAt(0);
> >
> > //if (reponse.length()==0) sTemp="1";
> > sTemp = reponse.substring(0,1); // <-- PROBLEME ICI
> > if (!sTemp.equals("0")) System.out.println("Erreur dans la commande pwd");
> > else {
> > int i =2;
> > int nbreCarac ;
> > String temp =""+reponse.charAt(2);
> > boolean espace = false ;
> > while((i<(reponse.length()-8)) && (!espace)) {
> > i++;
> > if (reponse.substring(i,i+1).equals(" ")) espace = true;
> > else temp += reponse.charAt(i);
> > }
> > nbreCarac = Integer.parseInt(temp);
> > for (int k = 0 ;k<nbreCarac; k++)
> > System.out.print((char) reponse.charAt(i+k+1));
> > System.out.println();
> > }
> > }
> > if (requete.equals("cd")) {
> > System.out.println("On a rentre la commande cd");
> > requete = 2 +" "+ (s.length()-3)+ " ";
> > while (j<requete.length()) {
> > requete += s.charAt(j);
> > j++;
> > }
> > byte[] buffer = requete.getBytes();
> > _dout.write(buffer,0,buffer.length);
> > reponse ="";
> > for (;;)
> {
> > reponse + = (char) _din.readByte();
> > sTemp = reponse.substring(0,1); // <-- PROBLEME ICI
> > if (sTemp.equals("1")) System.out.println("La commande cd a mal ete rentree");
> > if (sTemp.equals("2")) System.out.println("L'operation n'est pas permise");
> > if (sTemp.equals("3")) System.out.println("Le repertoire est inexistant");
> > if (sTemp.equals("0")) {}

}

> >
> > }
> >
> > }
> > catch (IOException e){
> > System.err.println(e);
> > try {_sockClient.close();}
> > catch (IOException ex){}
> > }

> > }
> >
> >
> >
> >
> >
> >
> > public static void main (String [] args){
> > if ((args.length>2) | (args.length ==0)) {
> > System.out.println("Erreur dans les arguments du client");
> > System.exit(1);
> > }
> > int port ;
> > try {
> > port = Integer.parseInt(args[1]);
> > }
> > catch (NumberFormatException e){
> > port = DEFAUT;
> > }
> > Client c = new Client(args[0],port) ;
> > c.start();
> > }
> >
> >
> > }
> >
> >
> >
> >
> >
> >
>
0
marsrepart Messages postés 18 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 23 janvier 2003
28 déc. 2002 à 10:22
je ne suis pas sur que ce soit la bonne solution.
Je t'explique grosso-modo ce que je veux faire...
En fait, je vais recevoir une reponse de requete dans mon dataInputStream que je vais convertir en chaine de caractères pour pouvoir effectuer un test sur le 1er caractere.
Effectivememnt, je suppose que le probleme vient de cette boucle, moi je pensais que lorsqu'on allait arriver en fin de flux, on allait sortir grace a l'exception EOFException. Et d'ailleurs, dans mes tests,c a marche comme ca.... Par contre, le compilateur n'a pas l 'air d'aimer le fait que l'on sorte si brutalement
0
JHelp Messages postés 261 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 6 octobre 2005 11
28 déc. 2002 à 14:15
En effet, et les boucles infinie sont le plus souvent à éviter.
Et pourquoi, puisque que seul le premier caractère t'interres tu ferais pas :

switch((char) _din.readByte())
{
   case '1' :
      System.out.println("La commande cd a mal ete rentree");
      break;
   case '2' :
      System.out.println("L'operation n'est pas permise");
      break;
   case '3' :
      System.out.println("Le repertoire est inexistant");
      break;
}


Ou si tu tiens absolument à récupérer tout le flux
int lu=-1;
do
{
   lu = _din.readByte();
   if(lu>=0)
      reponse += (char) lu;
}while(lu>=0);
sTemp = reponse.substring(0,1); 
if (sTemp.equals("1")) System.out.println("La commande cd a mal ete rentree");
if (sTemp.equals("2")) System.out.println("L'operation n'est pas permise");
if (sTemp.equals("3")) System.out.println("Le repertoire est inexistant");
if (sTemp.equals("0")) {}


JHelp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
marsrepart Messages postés 18 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 23 janvier 2003
28 déc. 2002 à 14:50
pas mal du tout... je suis preneur de la seconde solution ;) Je cherchais effectivement une solution du type numero 2, mais je n'arrivais pas à trouver des choses satisfaisantes.
Je vais appliquer ta seconde methode... et je reviendrais probablement t'embeter un peu beacoup .. ;)
merci beaucoup
bon boulot......

tchussssssssssss
0
marsrepart Messages postés 18 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 23 janvier 2003
28 déc. 2002 à 18:18
j'ai un dernier probleme ....
j'ai utilise la 2 eme boucle decrite au dessus et ...
en fait , quand je fais un pritnln pour voir ce qu'il y a dedans, rien ne s'affiche....

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

public class Client extends Thread{
private Socket _sockClient;
private static int DEFAUT = 3000 ;
private DataOutputStream _dout ;
private DataInputStream _din ;

public Client (String machine, int port){
try{
_sockClient = new Socket(machine,port);
_dout = new DataOutputStream (_sockClient.getOutputStream());
_din = new DataInputStream (_sockClient.getInputStream());
}
catch (IOException e){
System.err.println(e);
try {_sockClient.close();}
catch (IOException ex){}
}

}

public String lectureClavier(){
BufferedReader fr = new BufferedReader(new InputStreamReader (System.in));
String reponse ="" ;
try {
reponse = fr.readLine();
}
catch (IOException e){
System.out.println("Erreur dans la lecture au clavier");
System.exit(1);
}
return reponse;
}

public void run(){
String reponse ="";
String sTemp="";
boolean espace2 = false ;
int j = 0 ;
String requete ="";
try{

String s = lectureClavier();
while ((!espace2) && j<s.length()){

if (!s.substring(j,j+1).equals(" ")) {
requete +=s.charAt(j);
j++;
}
else espace2 = true;
}

// on vient de recuperer la commande de la requete
// On va effectuer des tests

System.out.println("la chaine de caractere rentree est : "+s);
if (requete.equals("pwd")) {
System.out.println("On a rentre la commande pwd");
requete = 1+"";
byte[] buffer= requete.getBytes();
_dout.write(buffer,0,buffer.length);
reponse = "";
int lu=-1;
do
{
lu = _din.readByte();
if(lu>=0) reponse += (char) lu;
}while(lu>=0);
System.out.print("Affichage de la chaine de reponse : ");
for (int h = 0; h <reponse.length() ;h++)
System.out.print(reponse.charAt(h));
System.out.println();
sTemp = reponse.substring(0,1);
if (!sTemp.equals("0")) System.out.println("Erreur dans la commande pwd");
else {
int i =2;
int nbreCarac ;
String temp =""+reponse.charAt(2);
boolean espace = false ;
while((i<(reponse.length())) && (!espace)) {
i++;
if (reponse.substring(i,i+1).equals(" ")) espace = true;
else temp += reponse.charAt(i);
}
nbreCarac = Integer.parseInt(temp);
System.out.println("Voici la valeur de nbreCarac : "+nbreCarac);
for (int k = 0 ;k<nbreCarac; k++)
System.out.print((char) reponse.charAt(i+k+1));
System.out.println();
}
}
if (requete.equals("cd")) {
System.out.println("On a rentre la commande cd");
requete = 2 +" "+ (s.length()-3)+ " ";
System.out.print("impression de la requete : ");
while (j<requete.length()) {
requete += s.charAt(j);
j++;
System.out.print(s.charAt(j));
}
System.out.println();
byte[] buffer = requete.getBytes();
_dout.write(buffer,0,buffer.length);
int lu=-1;
do
{
lu = _din.readByte();
if(lu>=0) reponse += (char) lu;
}while(lu>=0);

sTemp = reponse.substring(0,1);
if (sTemp.equals("1")) System.out.println("La commande cd a mal ete rentree");
if (sTemp.equals("2")) System.out.println("L'operation n'est pas permise");
if (sTemp.equals("3")) System.out.println("Le repertoire est inexistant");
if (sTemp.equals("0")) System.out.println(s);

}

}
catch (EOFException ex) {}
catch (IOException e){
System.err.println(e);
try {_sockClient.close();}
catch (IOException ex){}
}
}

public static void main (String [] args){
if ((args.length>2) || (args.length==0)) {
System.out.println("Erreur dans les arguments du client");
System.exit(1);
}
int port ;
try {
port = Integer.parseInt(args[1]);
}
catch (NumberFormatException e){
port = DEFAUT;
}
Client c = new Client(args[0],port) ;
c.start();
}

}
0
marsrepart Messages postés 18 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 23 janvier 2003
29 déc. 2002 à 15:49
mea culpa... l'erreur ne vient pasde ta petite boucle mais d'ailleurs ..... hmm... je pars à la cherchure (euh.. cherchance on dit peut-etre) de ce petit insecte...
0
marsrepart Messages postés 18 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 23 janvier 2003
30 déc. 2002 à 14:02
euh g marque l'endroit qui me pose souci dans mon code....
En fait, quand je lis le flux, si j'affiche ce que je lis, ca s'affiche, masi quand je lis la variable ou j'ai copie le flux, y'a plus rien... Un veritable tour de magie.... Je suis sur que j 'ia fait une enorme boulette !!!!

PS : question subsidiaire ... Ce code correspond (on l'aura compris) à un client du type FTP, comment faire pour qu'après avoir recu une commande et l'avoir execute, je puisse renvoyer une nouvelle commande

Merci

.
.
.
.
public void run(){
String reponse ="";
String sTemp="";
boolean espace2 = false ;
int j = 0 ;
byte [] buffer; // conversion en bytes de la requete
String requete ="";
try{

String s = lectureClavier();
while ((!espace2) && j<s.length()){

if (!s.substring(j,j+1).equals(" ")) {
requete +=s.charAt(j);
j++;
}
else espace2 = true;
}

// on vient de recuperer la commande de la requete
// On va effectuer des tests

System.out.println("la chaine de caractere rentree est : "+s);
if (requete.equals("pwd")) {
System.out.println("On a rentre la commande pwd");
requete = 1+"";
buffer= requete.getBytes();
_dout.write(buffer,0,buffer.length);
reponse = "";
int lu=-1;
System.out.print("affichage des valeurs de lu : ");
do
{
/********** LE SYSTEM.OUT.PRINTLN FONCTIONNE CI-DESSOUS *************************/
lu = _din.readByte();
System.out.print((char)lu+"");
if(lu>=0) reponse += (char) lu;
}while(lu>=0);
/*********** PARCONTRE CELUI EN DESSOUS NA PAS L'AIR DE FONCTIONNER ET A FORTIORI CEUX
QUI SONT UN PEUT PLUS BAS !!!! *********************************/
System.out.print("Affichage de la chaine de reponse : ");
for (int h = 0; h <reponse.length() ;h++)
System.out.print(reponse.charAt(h));
System.out.println();
sTemp = reponse.substring(0,1);
if (!sTemp.equals("0")) System.out.println("Erreur dans la commande pwd");
else {
int i =2;
int nbreCarac ;
String temp =""+reponse.charAt(2);
boolean espace = false ;
while((i<(reponse.length())) && (!espace)) {
i++;
if (reponse.substring(i,i+1).equals(" ")) espace = true;
else temp += reponse.charAt(i);
}
nbreCarac = Integer.parseInt(temp);
System.out.println("Voici la valeur de nbreCarac : "+nbreCarac);
for (int k = 0 ;k<nbreCarac; k++)
System.out.print((char) reponse.charAt(i+k+1));
System.out.println();
}
}
.
.
.
.
0
JHelp Messages postés 261 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 6 octobre 2005 11
31 déc. 2002 à 13:11
Oupsss.... :blush)
Honte à moi.
J'ai relu le code et je vois ce qui ne va pas.
J'ai fait une erreur de débutant.
En effet, tu fait _din.readByte(), donc tu lit un byte qui est comprit entre -127 et 128, et ma condition d'écriture, est >=0.
Pour se sortir de cette impasse je te propose la chose suivante : remplacer _din.readByte() par _din.read(), ainsi, çà marchera beaucop mieux.
JHelp
0
marsrepart Messages postés 18 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 23 janvier 2003
31 déc. 2002 à 13:14
il me semblait bien que c'etait read() qui renvoyait -1 en EOF :)
je vais pas te reprocher de m'avoir aidé :)
merci
0
marsrepart Messages postés 18 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 23 janvier 2003
1 janv. 2003 à 14:46
il y a quelque chose qui m'echappe, j'ai essaye cette de remplacer la methode readByte() par la methode read(), et mon programme ne sort toujours pas de la boucle.. Quand je fais un println de ce que contient ma boucle, nulle part il y a un -1 qui vient se greffer... Pourtant, une fin de flux est bien symbolizee par un -1 dans la doc...
Voici copie du code de la boucle ....

do
{
lu = _din.read();
System.out.print(lu+" ");
if (lu!=-1) reponse += (char) lu;
} while(lu!=-1);

ce code ne contient pourtant rien de special
0
JHelp Messages postés 261 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 6 octobre 2005 11
2 janv. 2003 à 10:57
En effet bizzard.
Ton code qui lui envoie l'info fait bien un close ?
Sinon, il va rester en attente.
JHelp
0
marsrepart Messages postés 18 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 23 janvier 2003
2 janv. 2003 à 12:22
mais oui moooooosieurrrrr.. j'ai ledroit de faire une belle grosse erreur que j'ai deja faite 1000 fois .. mais ouiiiii
non mais.....

ohh merci :)
j'avais oublie ce petit detail
bon, ben faut que j'aille mettre ce mechant close....

marci bcp (je sais.. je sais .. je me repete)
0
marsrepart Messages postés 18 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 23 janvier 2003
2 janv. 2003 à 12:27
euh... j'ai un souci si je close mon dout du serveur comme tu me le suggeres.... c pas un petit souci en plus....
en fait, il me deconnecte le client en me disant que le client a ferme son socket.
Si t'as -encore- une solution miracle....
te gene pas :)

marci
0
JHelp Messages postés 261 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 6 octobre 2005 11
2 janv. 2003 à 13:50
Dans ce cas au lieu d'un close, envoie un caractère spécial, in diquant fin de flux pour l'instant et de l'autre coté tu le test pour la fin de boucle
JHelp
0
marsrepart Messages postés 18 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 23 janvier 2003
2 janv. 2003 à 13:57
genre un '/r'.... ouep.. merci bcp de l'aide apporteee :)
0
Rejoignez-nous