ObjectInputStream hängt ganzes Programm auf...

G

Goldfish

Gast
Hi Leute, ich hab ein gewaltiges Problem dass ich mir nicht erklären kann. Ich habe ein Programm dass sich an einer bestimmten Stelle immer aufhängt, ohne mir eine Fehlermeldung zu geben oder das Programm zu beenden. Es bleibt einfach stehen. Die Stelle konnte ich genau bestimmen. Ich zeig das hier mal eben

[JAVA=42]
public NetworkStore(Socket sock){
try{
input = new ObjectInputStream(sock.getInputStream());
output = new ObjectOutputStream(sock.getOutputStream());
}catch(IOException ex){
System.out.println(ex.getStackTrace());
}
}
[/code]

Die rot markierte Stelle ist es, an der nichts mehr weiter geht.... Ich bin mit meinem Latein auch wirklich am Ende. Wäre echt super, wenn mir jemand helfen könnte...

Danke im Voraus
 
M

Marcinek

Gast
Hi,

das sollte nicht passieren.

Vieleicht mehr Code posten?

Kann es sein, dass die blockierende Stelle an .accept() ist? und da sowas passiert:
Code:
new worker(ss.accept());

Gruß,

Martin
 

Volvagia

Top Contributor
Versuch mal die Reihenfolge von OIS und OOS auszuwechseln. So ein ähnliches (oder das selbe) Problem hatte ich vor ca. einen Jahr einmal.
 
G

Goldfish

Gast
Ich fass es nicht, das hat echt geklappt, das auswechseln der Reihenfolge...
Danke dir ^^
Aber normal ist das ja eigentlich nicht. Was mich daran auch echt verrückt gemacht hat. Ich habe das in einem anderen Programm schonmal genauso gemacht, wie es da eben stand und da funktioniert es auch jetzt noch wunderbar, deswgeen konnte ich mir das beim besten Willen nicht erklären ^^

Danke danke ^^
 

Kr0e

Gesperrter Benutzer
Das ist nix magisches... Dafür gibts ne super einfache Erklärung, wenn man einfach mal einen Blick in den Source wirft...

Ein ObjectInputStream liest bei Erstellung 2 short Werte. Da auf beiden Seiten der Input zuerst erstellt wrid gibts nen DEadLock... Also als Grundregel: IMMER den Output zuerst ;)
 
G

Goldfish

Gast
Ich bin mit der Theorie dahinter nicht wirklich vertraut, daher bin ich mir gerade nicht ganz sicher, wie der source gerade aussehen mag und wieso das deshalb in einen Deadlock läuft. Aber ich werds mir für die Zukunft merken. Super, dass es hier genug Leute gibt, die sich auskennen ^^
 

Kr0e

Gesperrter Benutzer
Also:

Der ObjectInputStream liest bei der Erstellung des Objectes direkt 2 Short Werte aus dem Stream. Die ReadMethoden sind so programmiert, dass sie blockiern, wenn nix zum Lesen da ist. Wenn auf beiten Seiten (Client und Server) jeweils der ObjectInputStream zuerst erstellt wird, dann hängen beide Prorgamme bei der ReadMethode fest. Andersrum ist perfekt: Beide ObjectOutputStream schreiben erstmal 2 Zeichen in den Stream. Diese Daten wandern schonmal auf die adnere Seite und warten dann jeweils in den Puffern der Sockets. Wenn dann auf beiden Seiten der ObjectInputStrem erstellt wird, lesen die direkt die Zeichen aus den Socket Puffern ein und bleiben cniht hängen.

Gruß,

Chris
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K ObjectInputStream mit CypherInputStream hängt Netzwerkprogrammierung 7
D new ObjectInputStream(socket.getInputStream()); Netzwerkprogrammierung 15
G ObjectOutputStream und ObjectInputStream machen Ärger Netzwerkprogrammierung 17
F ObjectInputStream.readObject() mehrfach aufrufen Netzwerkprogrammierung 2
J ObjectInputStream im Netzwerk Netzwerkprogrammierung 8
K ObjectInputStream EOF Netzwerkprogrammierung 6
X ObjectInputStream StringCorruptedException Netzwerkprogrammierung 3
V StreamCorruptedException bei ObjectInputStream und ObjectOStream Netzwerkprogrammierung 5
S FileInputStream und ObjectInputStream Netzwerkprogrammierung 18
C Socket ObjectInputStream liest nur Objekte der jeweiligen Programminstanz Netzwerkprogrammierung 5
M InputStream and ObjectInputStream zur gleichen Zeit Netzwerkprogrammierung 11
J Socket ObjectInputStream prüfen Netzwerkprogrammierung 8
N Socket neue Referenz auf ObjectInputStream Netzwerkprogrammierung 13
E Rausfinden ob noch Objecte in ObjectInputStream Netzwerkprogrammierung 5
Y Problem mit ObjectInputStream beim lesen vom Socket Netzwerkprogrammierung 10
C komisches Problem / ObjectInputStream erstellt sich nicht Netzwerkprogrammierung 5
G Datei über ObjectInputStream versenden Netzwerkprogrammierung 8
R ObjectOutput- / ObjectInputStream Exception? Netzwerkprogrammierung 2
E ObjectInputStream/ObjectOutputStream nicht erzeugbar Netzwerkprogrammierung 2
T Problem mit ObjectInputStream Netzwerkprogrammierung 2
C Kollision von ObjectInputStream und BufferedReader ? Netzwerkprogrammierung 6
G ObjectInputStream gebuffert? Netzwerkprogrammierung 3
T Socket Java Programm hängt sich auf bei dem versuch von einem Socket scanner Daten zu erhalten. Netzwerkprogrammierung 1
I Swing hängt sich auf bei Verbindung zum Server Netzwerkprogrammierung 3
D Hilfe, meine HttpURLConnection hängt manchmal. Netzwerkprogrammierung 9
J Vom BufferedReader lesen -> hängt ohne Fehler,ohne Except Netzwerkprogrammierung 2
O JAVA hängt bei Dateikopie über LAN ein Byte an!!! ARGH Netzwerkprogrammierung 3
U ein ganzes Array effizient übermitteln Netzwerkprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben