Schattenfänger
Lt. Junior Grade
- Registriert
- Nov. 2010
- Beiträge
- 273
Hallo,
Ich muss hier was fertig machen aber leider hat sich ein Fehler eingschlichen, denn ich nach ner halben Stunde gefunden habe aber nach knapp 2h noch immer keine Ahnung habe wie umgehen.
Dabei ist es heute früh schon gelaufen, nur mit ein paar Einschränkungen.
Also
Ich starte Server; Starte Client, dieser startet den Socket sowie die GUI. Bei der GUI kommt ne Anmeldung, sobald ich die Daten eingegeben habe, wird auf den nächsten send() Tick gewartet und ein Request zum Server gesendet, ob diese korrekt waren.
Das Problem ist, das zwei Teile von meinem Code blockieren und ich nicht sehe weshalb.
So, hier blockiert read()
lksdfklasdfjköl, wird noch ausgegeben, aber danach geschieht nichts mehr. Das einzige was ich machen kann ist, von Zeile 22 bis 37 auskommentieren und dann läuft es.
Wenn ich responseLine auskommentiere komme ich bis "1".
Daher vermute ich, dass reader.readline als auch objStr.readObject() das Programm blockieren, ich weiß aber nicht was ich dagegen machen kann.
Jemand eine Idee?
Edit:
Ok, ich fange respnseLine jetzt mit
ab, und es scheint bisher zu funktionieren.
Ich muss hier was fertig machen aber leider hat sich ein Fehler eingschlichen, denn ich nach ner halben Stunde gefunden habe aber nach knapp 2h noch immer keine Ahnung habe wie umgehen.
Dabei ist es heute früh schon gelaufen, nur mit ein paar Einschränkungen.
Also
Ich starte Server; Starte Client, dieser startet den Socket sowie die GUI. Bei der GUI kommt ne Anmeldung, sobald ich die Daten eingegeben habe, wird auf den nächsten send() Tick gewartet und ein Request zum Server gesendet, ob diese korrekt waren.
Das Problem ist, das zwei Teile von meinem Code blockieren und ich nicht sehe weshalb.
Code:
public void run() {
try {
while (true) {
System.out.println("test");
this.send();
this.read();
}
} catch (IOException ex) {
Logger.getLogger(MainClient.class.getName()).log(Level.SEVERE,
null, ex);
System.out.println("Unknown Error.");
}
}
public void read() throws IOException {
String responseLine;
System.out.println("lksdfklasdfjköl");
//responseLine = is.readLine();
responseLine=reader.readLine();
if (responseLine != null) {
System.out.println("found");
System.out.println(responseLine);
}
try {
System.out.println("1");
rcvMsg = (DataPacket) objStr.readObject();
} catch (ClassNotFoundException ex) {
Logger.getLogger(ClientThread.class.getName()).log(Level.SEVERE,
null, ex);
System.out.println("Class not found");
}
System.out.println("2");
if (rcvMsg != null) {
switch (rcvMsg.type) {
// case "quit": this.close(); break;
case loginResponse:
this.loginAck(); // acknowledge after login
break;
// Client wants to know something
case getData:
break;
// Client sets new Data
case setData:
break;
}
}
}
private void initialize() {
try {
clientSocket = new Socket(host, portNumber);
inputLine = new BufferedReader(new InputStreamReader(System.in));
os = new PrintStream(clientSocket.getOutputStream());
is = new DataInputStream(clientSocket.getInputStream());
objStr = new ObjectInputStream(is);
objOut = clientSocket.getOutputStream();
oos = new ObjectOutputStream(objOut);
reader=new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
So, hier blockiert read()
lksdfklasdfjköl, wird noch ausgegeben, aber danach geschieht nichts mehr. Das einzige was ich machen kann ist, von Zeile 22 bis 37 auskommentieren und dann läuft es.
Wenn ich responseLine auskommentiere komme ich bis "1".
Daher vermute ich, dass reader.readline als auch objStr.readObject() das Programm blockieren, ich weiß aber nicht was ich dagegen machen kann.
Jemand eine Idee?
Edit:
Ok, ich fange respnseLine jetzt mit
Code:
while(reader.ready()){
responseLine=reader.readLine();
}
Zuletzt bearbeitet: