Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi WebApplication und IPClient (https://www.delphipraxis.net/88338-webapplication-und-ipclient.html)

Sidorion 14. Mär 2007 09:55


WebApplication und IPClient
 
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?


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz