Einzelnen Beitrag anzeigen

schwa226

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

AW: Indy 10 TIdTCPServer in Thread

  Alt 5. Jan 2011, 22:38
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;
Delphi 2010, Update 4 & 5

Geändert von schwa226 ( 5. Jan 2011 um 22:47 Uhr)
  Mit Zitat antworten Zitat