Entwickler-Ecke
Internet / Netzwerk - message an mehrere Server
Sued - Mi 23.10.02 18:21
Titel: message an mehrere Server
Also, ich hab folgendes Problem:
Client/Server Chat-programm;
Der Server hat ein array wo die ip's aller clients drinstehen;
Jetzt will ich eine MSG an alle Clients schreiben(von OnClientRead aus).
Habs bisher so gemacht:
procedure OnClientRead
begin
for a:=1 to 20 do
begin
clientsocket1.socket.active:=false;
clientsocket1.address:=client[a].ip;
clientsocket1.socket.active:=true;
end;
end;
und dann:
OnClientConnect;
begin
Sendtext(xxxxxxxxxxxxxxxxx)
end;
Hoff das ist verständlich.
Das Problem ist,daß immer zuerst die ganze OnClientRead procedure
abgearbeitet wird und dann an die letzte Adresse alle msgs geschickt werden.
Habs auch schon mit close statt 'clientsocket1.socket.active:=false;'
und so probiert.
Wär cool wenn mir jemand weiter helfen könnte.
THANX
Sued
O'rallY - Mi 23.10.02 20:10
Wenn das OnClientRead-Event aufgerufen wird, ist OnClientConnect schon längst aufgerufen worden. Also müsste dein Problem gelöst sein, wenn du SendText('xxxxx') einfach hinter ... .active := true setzt. Musst du mal ausprobieren, sitze im Moment nicht vor meinem PC ums nachzuprüfen.
Jebaz - Sa 26.10.02 00:02
Titel: erst mal von vorn....
hallo erst mal....ich bin ebenfalls seit einer woche an einem, bzw. mehreren chat-programmen...ich habs schon mit allem versucht, die "normalen" server/client-sockets und tcp-server/client komponenten aus dem Register Internet, und die Indy-Komponenten. Nun, mit Indy hab ichs soweit mal hingekriegt, nur hab ich dort keinen schimmer, wie ich jede Message eines Clients, an alle anderen verbundenen Clients zurücksenden kann.... da hab ich gedacht, ich greif auf die einfacheren server/client-sockets zurück, dessen propertys und functions doch um einiges einfacher aussehen....nur hab ich beim server-socket keine chance, die ip-addresse festzulegen!!! ich hab schon alles versucht, bin am verzweifeln....denn ohne sie festzulegen, hat der server immer den localhost...was mir einen dreck bringt, denn so kann ich nur auf meinem system hin und her chatten...währe echt nett, wenn mir das jemand sagen könnte, ich weiss,dass das irgendwie gehen muss!! ;-)
Sued - Di 29.10.02 00:03
Sorry das ich jetzt erst wieder da bin, hab bei mir daheim probleme mitm Internet.
Also.OnClientConnect wurde natürlich schonmal aufgerufen,müßte doch aber bei jedem .....activate wieder aufgerufen werden.will ja nicht nur an den einen client schreiben,von dem OnClientRead ausgelößt wurde, sondern auch an alle anderen.
Sendtext kann ich aus irgendeinem Grund nicht in der selben procedure
ausführen,in der ich auch connecte. Frühestens in OnConnect,glaub ich.
Thanx
Sued
O'rallY - Do 31.10.02 16:05
Ach, verdammter Mist, hab total Müll gelabert. Klar kann es nach meiner Beschreibung nicht funktionieren, da der Client ja noch nicht Verbunden ist. Dein Problem mit den Sockets zu handhaben wäre nämlich sehr umständlich.
Anders als bei UDP können mit TCP keine Daten verschickt werden, bevor eine Verbindung aufgebaut wurde. UDP ist ein s.g. "verbindungslosen Protokoll". Also würde ich UDP für deine Zwecke empfehlen und dann in einer Schleife die Daten schicken (nimm z.B. die Indy Komponente).
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!