Hi,
ich habe mir zwar schon alle relevanten Themen dazu im Forum durchgelesen, aber wirklich weiter geholfen hat mir das nicht.
Zu dem Problem:
Ich habe einen ChatServer:
Wenn ich jetzt auf einen Button klicke, dann wird der Server aufgerufen und schickt die Nachricht an den Client:
So erhält der Client die Nachricht:
Das klappt auch wunderbar. Wenn der Client jetzt eine Nachricht verschicken möchte, dann macht der das so:
Diese Nachricht bekommt dann der Server:
Mit der Zeile
schickt er diese Nachricht wiederum an den Client, um diese Nachricht dann im ClientChatFenster darzustellen. Dies mache ich so, um mit mehreren Clients zu arbeiten.
Da liegt dann auch das Problem, denn mit mit einem Client geht es wunderbar hin und her, aber nicht mit mehreren Clients.
Wenn ich einen zweiten Client einbinde, dann bekommt zwar der Server immer ganz toll die Nachricht, schickt diese aber dann nicht an beide Clients weiter, sondern nur an einen.
Was muss ich machen, damit das ganze funkioniert.
Gruß,
Thorsten F.
ich habe mir zwar schon alle relevanten Themen dazu im Forum durchgelesen, aber wirklich weiter geholfen hat mir das nicht.
Zu dem Problem:
Ich habe einen ChatServer:
Code:
try
{
ServerSocket srvr = new ServerSocket(1234);
Socket skt = srvr.accept();
PrintWriter out = new PrintWriter(skt.getOutputStream(), true);
out.print(text);
out.close();
skt.close();
srvr.close();
}
catch(Exception e)
{
System.out.print("Serverstart fehlgeschlagen\n");
}
Wenn ich jetzt auf einen Button klicke, dann wird der Server aufgerufen und schickt die Nachricht an den Client:
So erhält der Client die Nachricht:
Code:
try
{
Socket skt = new Socket("localhost", 1234);
BufferedReader in = new BufferedReader(new InputStreamReader(skt.getInputStream()));
while (!in.ready()) {}
input = in.readLine();
in.close();
skt.close();
}
catch(Exception e) {
System.out.print("Whoops! It didn't work!\n");
}
Das klappt auch wunderbar. Wenn der Client jetzt eine Nachricht verschicken möchte, dann macht der das so:
Code:
Client c = new Client();
c.connect();
c.send("<Client>: "+writeMessage.getText());
c.disconnect();
Diese Nachricht bekommt dann der Server:
Code:
ServerSocket soc = new ServerSocket(6541);
Socket inputsoc = soc.accept();
InputStream is = inputsoc.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader in = new BufferedReader(isr);
while ((inputLine = in.readLine())!=null )
{
System.out.println("VON CLIENT: " +inputLine);
new Server().sendToClient(inputLine);
write(inputLine);
}
inputsoc.close();
soc.close();
Mit der Zeile
Code:
new Server().sendToClient(inputLine);
Da liegt dann auch das Problem, denn mit mit einem Client geht es wunderbar hin und her, aber nicht mit mehreren Clients.
Wenn ich einen zweiten Client einbinde, dann bekommt zwar der Server immer ganz toll die Nachricht, schickt diese aber dann nicht an beide Clients weiter, sondern nur an einen.
Was muss ich machen, damit das ganze funkioniert.
Gruß,
Thorsten F.