Les Allergies
Alimentaires
Posez votre question Signaler

Java.io.IOException: Pipe not connected

karine - Dernière réponse le 5 nov. 2007 à 10:15
Bonjour,

voici mon code, je veux envoyer ce que je lis avec relaybinary dans le pipe pour le transmettre à interpreteur :

private PipedOutputStream relayBinary() throws IOException 
    {
	byte[] buf=new byte[1024];
        PipedOutputStream pipe = new PipedOutputStream();
	int n;

	while (true) {
	    n=fromWebBin.read(buf);
	    pipe.write(buf, 1, n-1);
	   
	}
	return pipe;
    } // !relayBinary

void envoi_reponseWeb_au_client() {
PipedOutputStream pipe = new PipedOutputStream();
pipe = relayBinary();
		
		 
PipedInputStream pipe2 = new PipedInputStream(pipe);
				
			

InputStreamReader input = new InputStreamReader(pipe2);
			
Interpreteur interprete = new Interpreteur(input, url); 
		
}
    


Voici mon erreur : java.io.IOException: Pipe not connected

Est-ce que vous voyez d'où ça provient ?

merci
Lire la suite 

Java.io.IOException: Pipe not connected »

11 réponses
Réponse
+0
moins plus
Sur quelle ligne se déclenche l'erreur ?
Ajouter un commentaire
Réponse
+0
moins plus
Ca se déclenche à la ligne

pipe.write(buf, 1, n-1);


dans la methode relayBinary.

Comment je peux corriger ça ?

merci !
Ajouter un commentaire
Réponse
+0
moins plus
Tu as oublié le connect je pense...
http://java.sun.com/j2se/1.4.2/docs/api/java/io/PipedOutputStream.html
Ajouter un commentaire
Réponse
+0
moins plus
heu, c'est quoi le connect ?

j'ai jamais fait de pipe avant, donc je suis un peu paumée ;-)
Ajouter un commentaire
Réponse
+0
moins plus
Aaaahaha tu n'as jamais fait de pipe (prononcer païpe) avant :o)))) C'est ton droit ^^ Oups pardon :o)

Bon en gros un pipe c'est une espèce de tube. Tu écris d'un coté et tu lis de l'autre. Il faut donc que tu le connectes pour définir qui lit et qui écrit. Donc regarde comment ça marche sur le lien ci-dessus.

Un exemple ici :
http://gbm.esil.univ-mrs.fr/~tourai/Java/node16.html#SECTION0214140000000000000000
Ajouter un commentaire
Réponse
+0
moins plus
Tu veux dire que je dois faire comme ça ?

PipedInputStream in=new PipedInputStream();
PipedOutputStream pipe=new PipedOutputStream(in);
connect(in);
connect(pipe);
Ajouter un commentaire
Réponse
+0
moins plus
OK, j'ai trouvé, c'était
pipe.connect(in);
in.connect(pipe);

Mais maintenant j'ai une autre erreur, je mets le code :
public  PipedInputStream relayBinary() throws IOException 
    {
	byte[] buf=new byte[1024];
       
	PipedInputStream in=new PipedInputStream();
	PipedOutputStream pipe=new PipedOutputStream(in);
	pipe.connect(in);
	in.connect(pipe);
	
	int n;

	while (true) {
	    n=fromWebBin.read(buf);
	    if (n==-1) break;
	    if (buf[0]==10 && cr) {
	    	sout.write(buf, 1, n-1);
		
		pipe.write(buf, 1, n-1);
		
	    }
	    else {
	    	sout.write(buf, 0, n);
		
		pipe.write(buf, 0, n);
		
	    }
            cr=false;
	}
	pipe.close();
	return in;
    } // !relayBinary

public void envoi_reponseWeb_au_client() {
PipedInputStream pipe = relayBinary();
	
			
InputStreamReader input = new InputStreamReader(pipe);
			
Interpreteur interprete = new Interpreteur(input, url); 
		}
}



et là j'ai l'erreur java.io.IOException: Already connected à la ligne
pipe.connect(in);

J'y comprends rien !!
jebok- 26 mai 2005 à 14:31
A mon avis, il suffit de supprimer la ligne
pipe.connect(in);

car la ligne écrite juste au-dessus fait exactement la même chose et apparemment Java n'aime pas faire 2 fois la même chose...
Ajouter un commentaire
Réponse
+0
moins plus
Essaie de t'inspirer du code qui est là :
http://www.eli.sdsu.edu/courses/spring97/cs596/notes/CGIandServer/CGIandServer.html

Ca à l'air de ressembler à ce que tu veux faire.
Ajouter un commentaire
Réponse
+0
moins plus
Merci mamiemando mais j'ai abandonné cette histoire de pipe.

Je me retourne le cerveau depuis le début de la semaine !

Donc j'ai tout effacé et je recommence.

mais merci quand même
Ajouter un commentaire
Réponse
+0
moins plus
Et ba! Il doit en avoir une grosse pour te retourner le cerveau... ok je sors...
Ajouter un commentaire
Ce document intitulé « java.io.IOException: Pipe not connected » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?