Hallo zusammen,
bin gerade in die Netzwerkprogrammierung eingetaucht und habe für mich als Beispiel auch schon ein Client Server Programm geschrieben. Soll ein Chat-Programm sein. Das Problem aber ist, das nur die erste Nachricht übermittelt wird. Den Fehler habe ich soweit nicht gefunden.
Hier der Code:
Server:
Client:
Danke schon mal im Voraus für eure Unterstützung.
bin gerade in die Netzwerkprogrammierung eingetaucht und habe für mich als Beispiel auch schon ein Client Server Programm geschrieben. Soll ein Chat-Programm sein. Das Problem aber ist, das nur die erste Nachricht übermittelt wird. Den Fehler habe ich soweit nicht gefunden.
Hier der Code:
Server:
Java:
package client_server;
import java.io.*;
import java.net.*;
class Server {
private ServerSocket server;
private Socket client;
Server(int port) {
try {
server = new ServerSocket(port); // Server starten
System.out.println("Server gestartet!");
while(true) {
client = server.accept(); // Wartet hier bis ein Client sich meldet
// Sobald sich ein Client gemeldet hat wird ein eigener Thread für ihn erstellt, damit diese Schleife auf weitere Verbindungen warten kann
Thread t = new Thread(new ClientHandler(client));
t.start(); // Thread wird gestartet
}
} catch(IOException e) {
}
}
public static void main(String[] args) {
Server s = new Server(5555);
}
}
class ClientHandler implements Runnable {
Socket client;
private BufferedReader inReader;
private String sIn;
ClientHandler(Socket c) {
client = c;
}
public void run() {
try {
// Streams
inReader = new BufferedReader(new InputStreamReader(client.getInputStream()));
sIn = inReader.readLine();
System.out.println(sIn);
} catch (IOException e) {
}
}
}
Client:
Java:
package client_server;
import java.io.*;
import java.net.*;
import java.util.Scanner;
class Client {
private Socket client;
private BufferedWriter outWriter;
private String message;
private Scanner scan;
Client(String host, int port) {
try {
client = new Socket(host, port); // Client starten und durch Angabe von "Host" und "Port" mit Server verbinden
System.out.println("Client gestartet!");
starteChat();
} catch (UnknownHostException e) {
System.err.print("Server nicht gefunden!");// Falls Server nicht gefunden wurde
} catch (IOException e) {
System.err.print("I/O Fehler!");
}
}
private void starteChat() {
try {
outWriter = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
scan = new Scanner(System.in); // Eingabe von Konsole lesen
while (true) {
System.out.print("Nachricht eingeben: ");
message = scan.nextLine();
if (message.equals("exit")) // Wenn "exit" eingeben wird, wird der Client beendet
break;
outWriter.write(message); // Eingabe an Server schicken.
outWriter.newLine(); // Damit auf der anderen Seite, der BufferedReader mit der Methode readLine() vom Server, auch das Ende der Zeile erkannt wird, muss explizit einen Zeilenumbruch mitgeschickt werden
outWriter.flush(); // Damit das geschriebene, der vorerst im Puffer liegt, sofort verschickt wird
}
outWriter.close(); // Stream schließen
} catch (IOException e) {
}
}
public static void main(String[] args) {
Client c = new Client("localhost", 5555);
}
}
Danke schon mal im Voraus für eure Unterstützung.
Zuletzt bearbeitet: