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;