AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy10 IdTCPServer Problem
Thema durchsuchen
Ansicht
Themen-Optionen

Indy10 IdTCPServer Problem

Ein Thema von ASKtec · begonnen am 8. Nov 2008 · letzter Beitrag vom 9. Nov 2008
 
ASKtec

Registriert seit: 19. Okt 2007
38 Beiträge
 
#1

Indy10 IdTCPServer Problem

  Alt 8. Nov 2008, 23:43
Hallo zusammen,

ich habe ein Problem mit einem Indy IdTCPServer...

Der Server läuft eine gewisse Zeit (ca 1 Std) ohne Probleme. Innerhalb dieser Zeit bekommt er alle 3 min einen Nachricht, die er an die verbunden Clients (derzeit 3) übermittelt. Nur dann plötzlich steigt er aus und ich verstehe nicht warum. Die Applikation bleibt zu sehen, jedoch ist ein beenden nur noch über den Taskmanager drin und eine neue Verbindung nimmt er auch nicht mehr an...

Die Indy-Komponenten habe ich gestern erst geupdated um zu vermeiden, dass evtl. mit einem älteren Release zusammenhängt...

Hier mal ein wenig Quellcode des Servers:

Der Server wird zur Laufzeit erstellt:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  IdTCPServer1 := TIdTCPServer.Create(self);
  IdTCPServer1.OnExecute := IdTCPServer1Execute;
  IdTCPServer1.OnConnect := IdTCPServer1Connect;
  IdTCPServer1.OnDisconnect := IdTCPServer1Disconnect;

  LoadSettings;

  IDTCPServer1.Active := true;
  if IDTCPServer1.Active then
    Log.Lines.Add(TimeToStr(now) + ': Server gestartet');
end;
Dann passiert im onExecute folgendes:
Delphi-Quellcode:
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var text, ip, command:string;
i:Integer;
List: TList;
begin
  text := Acontext.Connection.IOHandler.ReadLn;
  ip := Acontext.Connection.Socket.Binding.PeerIP;

  Command:= Copy(text, 1, Pos(':', text)-1);

  if Command <> 'NOOPthen
    Log.Lines.Add(TimeToStr(now) + ': ' + ip + ' ' + text);
  if Command = 'TITLEthen
    title := text;
  if Command = 'HELOthen
    text := title;

  ListView1.Clear;

  List := IdTCPServer1.Contexts.LockList;
  for i := 0 to List.Count - 1 do
    begin
    TidContext(List.Items[i]).Connection.IOHandler.WriteLn(text);
    with Listview1.Items.Add do
      caption := TIdContext(List.Items[i]).Connection.Socket.Binding.PeerIP;
   end;
  IdTCPServer1.Contexts.UnlockList;
end;
OnConnect macht nur einen Eintrag in ein Memo (Log):
Delphi-Quellcode:
procedure TForm1.IdTCPServer1Connect(AContext: TIdContext);
begin
  Log.Lines.Add('Verbindung: ' + AContext.Binding.PeerIP);
end;
und OnDisconnet;
Delphi-Quellcode:
procedure TForm1.IdTCPServer1Disconnect(AContext: TIdContext);
begin
  Log.Lines.Add('Verbindungsabbruch: ' + AContext.Binding.PeerIP);
end;

Mache ich hier irgendwo einen Fehler? Der Client der die Daten schickt bleibt ständig verbunden und zeigt auch weiterhin verbunden an, obwohl er im Server nicht mehr sichtbar ist (ich schicke vom Client aus zwischendurch eine Nachricht um festzustellen ob er noch lebt)...

Wer kann mir helfen?

Vielen Dank im voraus

Andreas
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz