Entwickler-Ecke

Internet / Netzwerk - Chat für mehr als 2 mit Indy


Calyptus - Mo 15.08.05 17:50
Titel: Chat für mehr als 2 mit Indy
Hallo,

ich will einen Chat bauen für mehr wie 2 Leute. Es soll ein Serverprogramm geben und ein paar Clients. Die Clients schicken ihre Nachrichten an den Server. Das Problem ist jetzt wie ich

a) an alle Clients und
b) die Nachricht wieder zurück schicke.

Es muss doch eine andere Lösung geben, als dem Server 32 idTCPClients zu geben oder?

Ich hab das hier gefunden, aber es nicht für Indy hinbekommen:


Delphi-Quelltext
1:
2:
3:
4:
5:
For i := 0 to ServerSocket.Socket.ActiveConnections -1 do  { hier muss für ServerSocket der Name eures Servers stehen. }
  begin
  with ServerSocket.Socket.Connections [i] do
  if (Connected) then SendText (NachrichtEdit.Text);
end


StefanH - Mo 15.08.05 17:56

schau dir das Chat-Beispiel von den Indys an! das ist ein Chat für mehr als 2


Calyptus - Mo 15.08.05 18:34

Ok. Danke. Es tut so halbwegs...

//Edit: Beim Client führt das hier nach ca 3 Sec dazu, das das Programm nicht mehr reagiert:


Delphi-Quelltext
1:
2:
 if Client.Connected then
  Memo1.Lines.Add(Client.ReadLn(''5));


Das ganze wird jede Sekunde im Timer ausgeführt.


Narses - Mo 15.08.05 21:04

Moin!

Du darfst nur lesen, wenn auch Daten da sind; sonst wartet .ReadLn, bis Daten da sind... :wink:

cu
Narses


Calyptus - Mo 15.08.05 21:11

Ich hab gedacht die '5' wär das Timeout falls das lesen nicht klappt. Naja.. wie mach ich das dann?


CeeJay D-Magic - Di 16.08.05 12:29

Muss es unbedingt eine der indy komponenten sein, wieso nimmst du nicht einfach mal die TServerSocket, bzw. TClientSocket zu benutzen, lad dir dazu folgendes runter
auf dem Thread:

http://www.delphi-forum.de/topic_Probleme+mit+Chatprogramm_43227,20.html

Ich hoffe ich konnte helfen, CeeJay D-Magic


DarkLord05 - Di 16.08.05 12:39

[OT]
Vill. will er mit den Indys arbeiten weil die jetzt moderner sind^^ (weiß nicht wie ich mich in diesem Fall anders ausdrücken soll^^).
Aber um es auch mal zu sagen, ich hab mit indy bis jetzt noch nix geschafft und mein kleiner Chat hat einen Server und verschickt auch daten an alle. (OHNE Client)
[/OT]


CeeJay D-Magic - Di 16.08.05 12:45

Geht das überhaupt?? so ohne Client??


Mit indy hab ich auch noch nechts hinbekommen....
Irgendwie zeigt er mir sogar fehler, wenn ich die Indybespiele, die es im Internet zum downloaden gab compilieren will <- Das kann ich überhaupt nicht verstehen!

Wofür gibt es dann diese dämlichen Bsp. wenn sie nicht funktionieren!!! (Nur damit kein Misssverständniß aufkommt, ich besitze die Indy koponenten).


Calyptus - Di 16.08.05 15:00

user profile iconCeeJay D-Magic hat folgendes geschrieben:
wieso nimmst du nicht einfach mal die TServerSocket, bzw. TClientSocket zu benutzen


Um erlich zu sein weil ich se nicht finde. Kann es sein das Indy die löscht, oder sind die bei Delphi 7 Prof einfach nicht dabei? Ich würde sie lieber nehmen weil ich dazu ein paar sehr einfache Beispiele habe.


DarkLord05 - Di 16.08.05 17:43

Also, die gibt es werden aber nur nicht mehr mit-installiert.
KLICK MICH [http://www.delphipraxis.net/topic49261_tserversocket+wo+ist+die+komponente.html&highlight=serversocket]
Da steht wie du die nachinstllieren kannst. Ist ganz einfach^^

@CeeJay D-Magic
Also ich habe das hinbekommen das in meinem Chat nur ein Server ist wo sich alle Clients anmelden müssen. Und der Server hat nicht nebenbei noch einen Client laufen. Weiß gar nicht warum damit so viele ein Problem haben. Gut ein bisschen ausprobieren gehört.


CeeJay D-Magic - Do 18.08.05 09:48

Achso meinst das, das is doch voll easy!
Da bin ich schon weiter 8)

aber ein Problem gibt es dennoch s.h.:http://www.delphi-forum.de/viewtopic.php?p=282256#282256

Vielleicht hat da wer ne Lösung?

@Calyptus, konnte dir diese Installationshinweise helfen??