Hi,
Ich habe vor eine Art Chat zu schreiben.
Dazu ist es natürlich von Nöten dass der Server auch mal was an den Client schickt. Aber wie?
Ich habe mich jetzt ein halbes wochenende durch jegliches Beispiel gelesen, welches Ich zu Indy10 gefunden hab und dazu NICHTS gefunden.
Die einzige Lösung, die Indy10 bereit hält ist offensichtlich folgende:
Delphi-Quellcode:
Client.IOHandler.WrtieLn('Hallo');
Res:=Client.IOHandler.ReadLn;
Das ist natürlich extrem praktikabel und total sinnvoll *Ironie bis Galgenhumor*
Was ich brauche ist im Prinzip ein Event welches ausgelöst wird sobald der Client eine Nachricht empfangen hat.
Ich habe mal in einer Randbemerkung etwas von einem Thread gehört mit welchem das gehen soll...
Das habe ich so versucht:
(Ich muss direkt dazu sagen dass ich mit Threads noch nicht die große Ahnung hab....)
Delphi-Quellcode:
procedure TClientThread.Execute;
var L: String;
begin
Self.Priority:=tpLower;
while not Terminated do
begin
Sleep(100);
if not Assigned(FIO) then Continue;
L:=FIO.ReadLn;
ShowMessage(L);
if Assigned(FOnInput) then FOnInput(L);
end;
end;
Delphi-Quellcode:
//OnCreate der MainForm
CT:=TClientThread.Create(True);
CT.Suspend;
CT.OnInput:=OnClientInput;
CT.IOHandler:=Client.IOHandler;
CT.Resume;
Nun ist es nur leider so dass offensichtlich im Thread nichts passiert...
Auch wenn ich nach dem Sleep eine hübsche ShowMessage einbaue: nix
Wenn ich dann versuche das ganze wieder zu beenden mit
Delphi-Quellcode:
CT.Suspend;
CT.Terminate;
CT.Free;
Hängt das Programm....
Woran liegt das?
Geht das mit den Indys vielleicht nicht doch einfacher?