Einzelnen Beitrag anzeigen

schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#9

AW: Indy 10 TIdTCPServer in Thread

  Alt 6. Jan 2011, 00:05
Habe die OnExecute des Servers jetzt so umgebaut.
Jetzt haut er den Client wieder raus und der Server kann beendet werden.

Mal schauen ob da noch was ist...
Delphi-Quellcode:
procedure TIndeed_Server.OnExecute(AContext: TIdContext);
var
  Active_Client : TIndeed_Client;
begin
  Active_Client := TIndeed_Client(AContext.Data);

  while AContext.Connection.Connected do
  begin
    if not AContext.Connection.IOHandler.InputBufferIsEmpty then
    begin
      if not Terminated then
        Client_Command_Handler(Active_Client)
      else
        AContext.Connection.IOHandler.InputBuffer.Clear;
    end;

    AContext.Connection.IOHandler.CheckForDisconnect(False, True);
    AContext.Connection.CheckForGracefulDisconnect(False);
    SleepEx(1, true);
  end;
end
Beim Server schließen dürfen auch nicht die einzelenen Verbindungen beendet werden.
Sondern einfach nur:
Delphi-Quellcode:
  if Assigned(fTCP_Server) then
  begin
    fTCP_Server.Active := false;
    FreeAndNil(fTCP_Server);
  end;
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat