Entwickler-Ecke

Internet / Netzwerk - Mehrere Clients und ein server


Pdd - Do 15.09.05 15:59
Titel: Mehrere Clients und ein server
Hi leute!


//EDIT: HAT SICH ERLEDIGT, HABE ABER TROZDEM NOCH EIN ANDRES PROBLEM:

Können sich nicht mehre Clienten einloggen, denn ich hab das so gelöst: client sendet an server, server liest nachricht und schreibt sie gleich wieder. aber die nachricht kommt nur bei dem clienten an, von dem sie geschrieben wurde, muss man da irgendwas angeben?


Narses - Do 15.09.05 22:31

Moin!

user profile iconPdd hat folgendes geschrieben:
client sendet an server, server liest nachricht und schreibt sie gleich wieder. aber die nachricht kommt nur bei dem clienten an, von dem sie geschrieben wurde, muss man da irgendwas angeben?

Du mußt die Nachricht vom Server aus an alle anderen Clients senden, ausser an den, der die Nachricht an den Server gesendet hat. Genaueres erfordert Code von dir. :roll: :wink:

cu
Narses


Pdd - Fr 16.09.05 07:00

Ja das ist der server, (welcher sobald er eine nachricht empfäng sie weiter schickt an ALLE clienten, aber ich hab es so gemacht, das der client die nachricht nicht direkt ins chatfenster übernimmt sondern sie erst dann reinstellt wenn sie vom server zurückkommt):

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.TCPExecute(AContext: TIdContext);
var
text: string;
begin
text:=AContext.Connection.IOHandler.ReadLn ;
AContext.Connection.IOHandler.WriteLn(text);
end;
dann kommt die anchricht auch an aber nur bei dem clienten, der sie gesendet hat! nicht bei den andren! soll ich maxconnections von 0 auf 50 oda so stellen? oder muss ich beim server die clienten bei bindings eintragen? Kenn mich halt net so aus hab bisher nur mit andren sachen was gemacht. Aber wennn ich die bei bindings eintrage, sendet er dan an alle, wenn ich

Delphi-Quelltext
1:
2:
text:=AContext.Connection.IOHandler.ReadLn ;
AContext.Connection.IOHandler.WriteLn(text);
mache oder muss ich dann angeben an welche er senden soll`?

ach ja; das is der client:

Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.sendClick(Sender: TObject);
begin
TCPClient.IOHandler.WriteLn('['+nick.Text+']: '+  messagetosend.text);
messagetosend.Text:='';
end;


Pdd - Sa 17.09.05 23:44

Also erstmal danke für die schnelle antwort! ;-)

Ich hab jetzt rausgefunden das das mitr bindings gehen muss aber ich bekomme es nicht hin, ein neues binding hinzuzufügen! muss man das mit tcpserver.bindings.add amchen? da funzts nähmlich net!