Guten Abend liebe Forenuser,
ich bin ein Anfänger in Java und tue mich schwer bei unserem Client Server Beispiel.
Ich habe hier meine 2 Klassen, hier die Client Klasse:
Hier die Server Klasse:
Ich vermute das der Fehler irgendwie in dem flush ist. Ich komme zu Beginn vom Client zum Server aber dann nicht mehr zurück. Es soll eine Endlosschleife sein, also es soll immer zwischen den beiden Kommuniziert werden können.
Bei einem einmaligen Chat funktioniert das Programm wen ich die 3 Auskommenteirten Zeilen:
// output.flush();
// input.close();
// output.close();
sichtbar mache. Damit schließe ich aber die Verbindung. Wohin gehört dieses flush eigentlich?
Warum komme ich nicht mehr nach der Servereingabe in den Client zurück?
Vielleicht stimmt da was mit dem Puffer nicht...?
Ich danke euch schon im voraus und Danke dafür das es dieses Forum gibt.
Einen schönen Abend wünsche ich euch noch,
Ethernut
ich bin ein Anfänger in Java und tue mich schwer bei unserem Client Server Beispiel.
Ich habe hier meine 2 Klassen, hier die Client Klasse:
Java:
package at.tw.ose;
import java.net.*;
import java.io.*;
public class Client {
Client() throws IOException {
while (true) {
Socket server = new Socket("localhost", 1234);
BufferedReader input_socket = new BufferedReader(
new InputStreamReader(server.getInputStream()));
BufferedReader input = new BufferedReader(new InputStreamReader(
System.in));
BufferedWriter output = new BufferedWriter(new OutputStreamWriter(
server.getOutputStream()));
System.out.println("Bitte Text eingeben (Client): ");
String server_text = input.readLine();
System.out.println("Folgender Text wurde eingegeben: "
+ server_text);
output.write(server_text);
System.out.println("Text wurde gesendet");
output.flush();
System.out.println("Text von Server empfangen: "
+ input_socket.read());
}
// }
// server.close();
// input.close();
// output.close();
}
public static void main(String[] argv) {
try {
Client client = new Client();
} catch (IOException e) {
System.out.println(e);
}
}
}
Hier die Server Klasse:
Java:
package at.tw.ose;
import java.net.*;
import java.io.*;
public class KleinerServer2 {
ServerSocket server = new ServerSocket(1234);
char[] cbuf = new char[1024];
KleinerServer2() throws IOException {
while (true) {
Socket client = server.accept();
BufferedReader input_cmd = new BufferedReader(
new InputStreamReader(System.in));
BufferedReader input = new BufferedReader(new InputStreamReader(
client.getInputStream()));
BufferedWriter output = new BufferedWriter(new OutputStreamWriter(
client.getOutputStream()));
System.out.println("Datei von Client empfangen: " + input.read());
System.out.println("Bitte Text eingeben (Server): ");
String client_text = input_cmd.readLine();
System.out.println("Folgender Text wurde eingegeben: "
+ client_text);
output.write(client_text);
System.out.println("Text wurde gesendet");
// output.flush();
// input.close();
// output.close();
}
}
public static void main(String[] argv) {
try {
KleinerServer2 server = new KleinerServer2();
} catch (IOException e) {
System.out.println(e);
}
}
}
Ich vermute das der Fehler irgendwie in dem flush ist. Ich komme zu Beginn vom Client zum Server aber dann nicht mehr zurück. Es soll eine Endlosschleife sein, also es soll immer zwischen den beiden Kommuniziert werden können.
Bei einem einmaligen Chat funktioniert das Programm wen ich die 3 Auskommenteirten Zeilen:
// output.flush();
// input.close();
// output.close();
sichtbar mache. Damit schließe ich aber die Verbindung. Wohin gehört dieses flush eigentlich?
Warum komme ich nicht mehr nach der Servereingabe in den Client zurück?
Vielleicht stimmt da was mit dem Puffer nicht...?
Ich danke euch schon im voraus und Danke dafür das es dieses Forum gibt.
Einen schönen Abend wünsche ich euch noch,
Ethernut
Zuletzt bearbeitet von einem Moderator: