Thema: Delphi Indy Commandhandler

Einzelnen Beitrag anzeigen

th_bone

Registriert seit: 16. Jun 2004
172 Beiträge
 
Delphi 2005 Professional
 
#1

Indy Commandhandler

  Alt 18. Jan 2006, 17:50
Hi,

ich versuche gerade der Übersichtlichkeit halber einen TCPserver auf CMDTCPServer umzustellen
und will dazu einen Stream senden - nur wie komme ich im Client wieder an den Stream ?

bzw. würde ich hier auch gerne den CMDTCPclient verwenden... aber stehe hier nochmehr auf
dem schlauch...

Gibts irgendwo ein Bsp. wo CMDTCPServer und CMDTCPclient verwendet werden ? bei den Indy demos bin ich leider nicht fündig geworden und die Anschaffung von 'Indy in Depth' war auch ein totaler reinfall - da steht auch nur allgemeines bla bla drin - von wegen viele Beispiele...

Danke für alle Tips

Ralf

P.S. hier mein Code vom CMDTCPserver - aufruf und Abarbeitung im Server funzen ohne Probleme

Delphi-Quellcode:

// aufgerufen wird es vom client mit
//
// tcpclient.SendCmd('GetExchanges');
//

procedure TForm1.CmdTCPServerGetExchangesCommand(ASender: TIdCommand);
var
  IDS: TidStreamVCL;
  Datastream : TMemoryStream;
  exchangedata : TExchanges;
begin
  // Exchangetabelle auslesen
  datastream:= Tmemorystream.Create;
  TBexchanges.first;
  while not TBexchanges.eof do begin
    exchangedata.Sr2wExchangeID:=TBexchanges.FieldByName('EXCHANGEID').AsInteger;
    //...
    datastream.Write(exchangedata,sizeof(exchangedata));
    TBexchanges.next;
  end;

  datastream.Position:=0;
  IDS := TidStreamVCL.Create(datastream);

  // Exchangesliste senden...
  try
    with asender.Context.Connection do begin
      IOHandler.WriteBufferOpen;
      iohandler.WriteLn(inttostr(stCommand)+'EXCHANGES');
      socket.Write(IDS,0,true);
      IOHandler.WriteBufferClose;
    end;

  finally
    datastream.free;
    FreeAndNil(IDS);
  end;
end;
  Mit Zitat antworten Zitat