B
Big Al
Gast
Hi,
ich habe gerade angefangen, mich mit Java zu beschäftigen. Da ich von C# komme, wollte ich mal einen alten Netzwerkchat nach Java übertragen. Nur Kommt aus einem mir leider nicht ersichtlichen Grund die Nachricht am Ende des Streams nicht raus. Am besten ich poste mal meinen Code.
Das hier ist der Code, der im Server in einem Thread den Stream liest:
(Client ist der Socket, outStack der Stack mit den Nachrichten, die raus sollen)
Hier zeigt in.available() leider immer das Ergebnis 0.
Hier der Code, der im Client läuft:
Wenn ich debugge und einen Breakpoint auf writer.write(outStack.pop()); setze wird der auch ausgelöst, die Nachricht müsste also rausgehen.
Wäre schön wenn mich jemand aufklären würde, was man da in Java anders machen muss.
Vielen Dank,
Alexander
ich habe gerade angefangen, mich mit Java zu beschäftigen. Da ich von C# komme, wollte ich mal einen alten Netzwerkchat nach Java übertragen. Nur Kommt aus einem mir leider nicht ersichtlichen Grund die Nachricht am Ende des Streams nicht raus. Am besten ich poste mal meinen Code.
Das hier ist der Code, der im Server in einem Thread den Stream liest:
(Client ist der Socket, outStack der Stack mit den Nachrichten, die raus sollen)
Code:
java.io.InputStream in;
java.io.OutputStream out;
java.io.BufferedReader reader;
java.io.BufferedWriter writer;
in = Client.getInputStream();
out = Client.getOutputStream();
writer = new BufferedWriter(new java.io.OutputStreamWriter(out));
reader = new java.io.BufferedReader(new java.io.InputStreamReader(in));
while (!stopRequested) {
while (in.available() > 0)
{
observer.HandleInputMessage(reader.readLine());
}
while (!outStack.empty()) {
writer.write(outStack.pop());
try {
java.lang.Thread.sleep(100);
} catch (InterruptedException ex) {
Logger.getLogger(RemoteClientHandler.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
in.close();
out.close();
Hier zeigt in.available() leider immer das Ergebnis 0.
Hier der Code, der im Client läuft:
Code:
java.io.BufferedReader reader = null;
java.io.BufferedWriter writer = null;
try {
reader = new java.io.BufferedReader(new java.io.InputStreamReader(Client.getInputStream()));
writer = new java.io.BufferedWriter(new java.io.OutputStreamWriter(Client.getOutputStream()));
while(!stopRequested)
{
while(reader.ready())
{
String msg = reader.readLine();
if(observer != null)
observer.HandleInputMessage(msg);
}
while(!outStack.empty())
{
writer.write(outStack.pop());
}
try {
java.lang.Thread.sleep(100);
} catch (InterruptedException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
}
}
} catch (IOException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
reader.close();
writer.close();
} catch (IOException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
}
}
Wäre schön wenn mich jemand aufklären würde, was man da in Java anders machen muss.
Vielen Dank,
Alexander