Einzelnen Beitrag anzeigen

UliBru

Registriert seit: 10. Mai 2010
155 Beiträge
 
Delphi 11 Alexandria
 
#1

Ersetzen nicht-blockierender TServerSocket durch Indy

  Alt 11. Mai 2014, 12:15
Ich habe eine ganz simple funktionierende Anwendung mit TServerSocket (hier zudem vereinfacht dargestellt):
Delphi-Quellcode:
  TMainForm = class(TForm)
    ServerSocket1: TServerSocket;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
  end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
  ServerSocket1.ServerType := stNonBlocking;
  ServerSocket1.Port := 4711;
  ServerSocket1.Open;
end;

procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  ServerSocket1.Close;
end;

procedure TMainForm.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
  nachricht: string;
begin
  nachricht:= string(Socket.ReceiveText);
  if nachricht = 'hallothen
    Socket.SendText(ansistring('hallo empfangen'));
  end;
end;
Nun soll das Ganze mit Indy, also wohl TIdTCPServer, ersetzt werden. Ich lese, dass Indy kein nicht-blockierend kann bzw. man sich was mit Threads etc. ausdenken muss.

Kann mir jemand das obige Beispiel mit Indy aufzeigen? Ich finde immer reichlich Kompliziertes, wäre aber an einer einfachen Lösung interessiert.

Falls jemand meint, ich sollte TServerSocket weiterverwenden, wäre ich natürlich interessiert, wie man das mit FMX einbindet.

- Uli
Er wollte so richtig in Delphi einsteigen. Nun steckt er ganz tief drin ...
  Mit Zitat antworten Zitat