Folgendes Problem:
Ich habe eine WebApplication, die über
IP mit einem Server kommunizieren soll. Ein beispiel: Der Nutzer startet den Browser und verbindet sich zur WebApplication. Jetzt bekommt er einen Anmeldebildschirm wo er Nutzer und Passwort eingeben muss. Diese Information sendet nun de WebApplication über einen Clientsocket an den Server. Soweit klappt alles. Das Problem, das ich habe ist, dass die WebApplication solange warten muss, bis der Server antwortet, also der Request an den Server zwingend synchron ablaufen muss. Dazu habe ich folgendes Konstrukt verwendet, da die WebApplication kein ProcessMessages kennt.
Delphi-Quellcode:
FClientSocket.Socket.SendText(sText);
sText:='';
While (Pos(IP_END_TOKEN,sText)<1)
And (FClientSocket.Socket.Connected)
Do sText:=sText+FClientSocket.Socket.ReceiveText;
Result:=Pos(IP_END_TOKEN,sText)>0;
Die Schleife wird also erst verlassen, wenn entweder der Socket nicht mehr verbunden ist, oder die Antwort komplett da ist. Solange die Kommunikation klappt ist alles in Ordnung, aber: FClientSocket.Socket.Connected bleibt true, auch wenn ich den Server beende, d.h.: die WebApplication wartet bis St. Nimmerlein. Ein Timer für Timeout funktioniert nicht, da der TimerEvent nie bearbeitet wird, da ja aufgrund des fehlenden ProcessMesages keine Events verarbeitet werden, solange die Schleife durchlaufen wird.
Kennt jemand eine Möglichkeit, den Request zu synchronisieren und dennoch mit den Events (OnError, OnRead) des ClientSockets arbeitten zu können?
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>