Read end ded [PipedInputStream...]

Mangooxx

Neues Mitglied
Guten Tag alle zusammen,

ich weiß nicht ob dieses Thema hier rein gehört oder doch eher zu Netzwerken, hoffe es ist hier jedoch richtig.

Mein eigentliches Problem ist, ich habe zwei Threads die über Pipes kommunizieren und über eine Pipe möchte ich komplette Objekte schicken (ich weiß ich könnte den anderen Thread einfach auf z.b. auf Vector zugreifen lassen... aber das will ich nicht in dieser form). Ich bin noch ein ziemlicher einstiger in sachen Threads usw. nun habe ich einen Weg gefuden wie dies möglich ist, aber ich bekommen eine IOException Read end dead (aber nur wenn ich ein Objekt über die Pipe senden möchte). hier ist der Code(die Wichtigen ausschnitte):

Mainclass (Start Thread)
Java:
package Thread;
import java.io.*;
public class ControlerThread {

	public static void main(String[] args) {
		PipedReader pr = new PipedReader();
		PipedWriter pw = new PipedWriter();
		
		
		PipedOutputStream pos = new PipedOutputStream();
		PipedInputStream pis = null;
		ObjectOutputStream oos =null;
		ObjectInputStream ois = null;
		try
		{	 
			pw.connect(pr);
			pis =  new PipedInputStream(pos);
			oos = new ObjectOutputStream(pos);
			ois = new ObjectInputStream(pis);
			
			
		
		}catch(IOException ioe)
		{
			
		}
			
			ModelThread mt = new ModelThread(ois,pr);
			ViewThread vt = new ViewThread(oos,pw);
			
			vt.start();
			mt.start();
			
			
		
		

	}

}


Sende Thread:
Java:
public class ViewThread extends Thread{
	PipedWriter pw;
	BufferedWriter bw;
	
	ObjectOutputStream oos;
	public ViewThread(ObjectOutputStream oos,PipedWriter pwr )
	{
		this.oos = oos;
		this.pw = pwr;
		bw = new BufferedWriter(pw);
		
	}
       ...
       ...
       ...
       case 3: try{
						
						
						//if(!mu.exportFile().isEmpty()){
							Kontakt k = new Kontakt();
							k.anrede = "Herr";
							k.bemerkung ="MusterMuster";
							k.fax ="234";
							k.name ="Mustermann";
							k.ort ="Musterort";
							oos.writeByte(123); // Dies kann ich Schreiben ohne ein Fehler zu bekommen
							
							oos.writeObject(k);
							oos.flush();
							
							bw.write("3");
							bw.write("\n");
							bw.flush();
							//oos.flush();
							/*for(Kontakt k : mu.exportFile())
							{
								System.out.println(k.bemerkung);
								oos.writeObject(k);
								oos.flush();
							}
							*/
						//}
						
					}catch(IOException ioe)
					{
						ioe.printStackTrace();
					}; break;

Empfänger Thread:
Java:
package Thread;
import java.io.*;
public class ModelThread  extends Thread{
	
	private PipedReader pr = null;
	private BufferedReader br = null;
	//private String datei = "test.csv";
	//private FileOutputStream fos;
	//private ObjectOutputStream oos = null;
	
//	private FileInputStream fis;
	private ObjectInputStream ois = null;

	public ModelThread(ObjectInputStream ois,PipedReader pr)
	{
		
		this.pr = pr;
		br = new BufferedReader(pr);
		this.ois = ois;
	}
public void run()
	{
		try
		{
			do
			{
			
			
				if(br.readLine().equals("3"))
				{
					
						
				
						System.out.println("available:" + ois.available());
						if(ois.available() != 0 )
						{
							
							Kontakt k = (Kontakt) ois.readObject();
							System.out.println(k.name);
						}
				}
			}
			while(true);
		}catch(IOException e)
		{
			
		}catch(ClassNotFoundException ce)
		{
			
		}
		
	}
}

Die Excpetion die ich bekomme:
Java:
java.io.IOException: Read end dead
	at java.io.PipedInputStream.checkStateForReceive(Unknown Source)
	at java.io.PipedInputStream.receive(Unknown Source)
	at java.io.PipedOutputStream.write(Unknown Source)
	at java.io.ObjectOutputStream$BlockDataOutputStream.writeBlockHeader(Unknown Source)
	at java.io.ObjectOutputStream$BlockDataOutputStream.drain(Unknown Source)
	at java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(Unknown Source)
	at java.io.ObjectOutputStream.writeFatalException(Unknown Source)
	at java.io.ObjectOutputStream.writeObject(Unknown Source)
	at Thread.ViewThread.run(ViewThread.java:54)

Der Fehler kommt immer wenn ich Case 3 aufrufe (ob noch weiter Fehler auftauchen als diese kann ich zu diesem Zeitpunkt nicht sagen). Möglicherweise sind noch viele Fehler enthalten oder es gibt eine Einfachere möglichkeit ein Objekt über eine Pipe zu senden als diese, die ich gewählt habe.

Ich bin auf jedenfall für jede Hilfe sehr dankbar!!!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Input/Output InputStream/Scanner(System.in) read()/hasNextLine() block unterbrechen Allgemeine Java-Themen 7
D Read JSON File Problem Allgemeine Java-Themen 9
S Read End Dead Allgemeine Java-Themen 2
S Read End Dead Allgemeine Java-Themen 1
T ImageIO.read -> Can`t read input file Allgemeine Java-Themen 11
thet1983 Input/Output read properties file from classpath Allgemeine Java-Themen 3
H Security Manager (IIOException: Can't read input file!) Allgemeine Java-Themen 2
I Javafx Open/Read und Tree Funktion Allgemeine Java-Themen 14
M Threads synchroner Zugriff (add/delete/read) auf eine Liste Allgemeine Java-Themen 6
T InvalidClassException - Read null attempting to read class descriptor for object Allgemeine Java-Themen 8
A RandomAccessFile.read(byte[] b) Allgemeine Java-Themen 9
1 Check read/write permission for file Allgemeine Java-Themen 4
J write / read Problem Allgemeine Java-Themen 9
E Durch System.in.read() blockierten Thread stoppen Allgemeine Java-Themen 10
N read streams umleiten Allgemeine Java-Themen 2
G Read only Eclipse- Datei Allgemeine Java-Themen 5
W Konflikt byte->int, in.read->arraycopy Allgemeine Java-Themen 7
M BufferedReader.read(char[] cbuf) liefert falsche Werte? Allgemeine Java-Themen 4
A Probleme mit ImageIO.read( . ) Allgemeine Java-Themen 12
S NoClassDefFoundException - ImageIO.read - Applet Allgemeine Java-Themen 3
S java.io.InputStream.read(byte[] b) überschreiben Allgemeine Java-Themen 33
A System.in.read() Problem Allgemeine Java-Themen 6
R read/readline blockiert Allgemeine Java-Themen 5
F Zu große Werte beim byteweisen Lesen mit BufferedReader.read Allgemeine Java-Themen 5
C ImageIO die read-Methode liefert mir ein null- Wert zurück Allgemeine Java-Themen 10
M InputStream.read abbrechen Allgemeine Java-Themen 2
K Blockierender PipedInputStream Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben