Autor Beitrag
creality
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mo 29.09.08 16:46 
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:

ausblenden 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.

ausblenden 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??