Hallo Leute,
auch nach Tagelangem Suchen hab ich immernoch nicht die Lösung für ein "eigentlich" simples Problem.
Folgendes
---------
Ich hab bei Exppert-Exchange gesehen, dass viele bei Client / Server Transfers immer die ServerSeite als Empfangsseite nutzen. WIESO!?!
Auf der Serverseite (TIDTCPServer) wird immer auf das OnExecute Event gehört:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm2.ServerExecute (AContext: TIdContext); var S: string; begin Sleep (5);
if AContext.Connection.IOHandler.InputBufferIsEmpty then Exit;
S := AContext.Connection.IOHandler.ReadLn;
if S = '' then Exit;
mmo.Lines.Add ('Execute Read: ' + S); end; |
Hier passiert doch folgendes: Ein Client schickt einen String an den Server und der wiederrum macht irgendwas damit. Hier müsste bei einer richtigen App doch ein
Request übertragen werden der vom Server beantwortet wird. Will ein Client bsp. ein Bild haben, müsste der Server den Transfer des Bildes beginnen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm2.ServerExecute (AContext: TIdContext); var S: string; begin Sleep (5);
if AContext.Connection.IOHandler.InputBufferIsEmpty then Exit;
S := AContext.Connection.IOHandler.ReadLn;
if S = '' then Exit;
mmo.Lines.Add ('Execute Read: ' + S);
if (S = 'IMAGE_PLEASE') then begin SendImage(AContext, Image) --- So ungefähr end; end; |
Dummerweise gibts beim Client keine Execute Methode sondern nur WorkBegin, WorkEnd und OnWork Methoden. Und diese haben kein Context.
Wie soll mans denn nun machen?
Jemand ne Idee??