Nochmal ich!
Jetzt bin ich auf noch ein Problem gestoßen:
Der Server läuft und der Client wartet auf Daten:
dTCPClient.IOHandler.ReadBytes(Buf, 16, False);
Nun wird der Server beendet mit
Delphi-Quellcode:
if Assigned(fTCP_Server) then
begin
if fTCP_Server.Contexts.LockList.Count > 0 then
begin
for i := fTCP_Server.Contexts.LockList.Count - 1 downto 0 do
begin
TIdContext(fTCP_Server.Contexts.LockList[i]).Connection.Disconnect;
TIdContext(fTCP_Server.Contexts.LockList[i]).Connection.IOHandler.DiscardAll;
end;
end;
fTCP_Server.Contexts.UnlockList;
fTCP_Server.Active := false;
FreeAndNil(fTCP_Server);
end;
Alles passt, Server kann beendet werden.
Wenn nun aber der Client Daten an den Server schickt, egal ob dieser diese Auswertet oder nicht dann kann der Server wieder nicht beendet werden!
Also wenn der Client sowas macht:
IdTCPClient.IOHandler.Write(Buf, 16);
Es steht dann wieder beim Active := False;