Also dazu habe ich hier ein entsprechendes Thema gefunden:
http://stackoverflow.com/questions/5...nt-delphi-indy
Ich könnte dementsprechend einen Thread machen, der prüft, ob Eingänge vorliegen:
Delphi-Quellcode:
procedure TCommThread.Execute;
var
Msg:
String;
begin
try
while (AClient.Connected)
do begin
AClient.IOHandler.DefStringEncoding := IndyTextEncoding_UTF8;
Msg := AClient.IOHandler.ReadLn;
if Msg = '
irgendwas...'
then begin
Sychronize (dasOderdas);
end;
if Msg = '
DisconnectClient'
then begin
break;
// Thread beenden
end;
end;
except
on E:
Exception do
ErrorMsg := '
Error! ' + E.ClassName + '
||' + E.
Message;
end;
end;
Nach ReadLn pausiert der IndyThread solange, bis eine Nachricht vom Server vorliegt.
Aber offesichtlich ist dann die Komponente solange auch nicht für das Senden von Nachrichten ansprechbar, oder?
Wenn ich versuchen mit der Componente etwas zu senden, kommt beim Server nur ein leerer String an (er sendet zwar, aber ohne Inhalt?).
EDIT: Korrektur: War mein Fehler, hatte beim Senden vergessen eine Kommandokennung zu setzen, geht also doch!!
Es ginge also tatsächlich mit nur einer Client-Server-Verbindung sowohl aktives Senden und Empfangen vom Client aus, so wie vom Server aus zu ermöglichen. Oder könnte sich da etwas ins Gehege kommen, wenn die Clientkomponente gleichzeitig wartet und gleichzeitig sendet?