Einzelnen Beitrag anzeigen

Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#1

Indy TCPClient Connection Status

  Alt 19. Mär 2015, 10:42
Hallo,
ich hatte vor einiger Zeit ein Client-Server-Konstrukt gebastelt, mit dem mehrere Rechner Systeminformationen (CPU, RAM etc) an einen Server schicken.
Die Clients sind alle Windows Rechner, der Server wurde jetzt auf Linux umgestellt, sodass ich den Server mit Lazarus auf Linux kompiliert habe.
Zu Testzwecken ist der Server erstmal nur eine Konsolenanwendung und noch kein Dienst oder ähnliches.

Der Server erstellt einen Indy10 TCP-Server und geht dann in eine "Endlosschleife", in welcher er wartet.

Delphi-Quellcode:
procedure TMyServer.DoRun;
begin
  Init();
  while (not Terminated) do
  begin
    if KeyPressed then
      if ReadKey = ^C then
      begin
           Log('Shutting down...');
           Terminate;
      end;
    Sleep(2);
  end;
  Terminate;
end;
Die Initialisierung klappt auch wunderbar, der Server ist bereit, Verbindungen entgegenzunehmen.
Der "alte" Windows Client kann sich auch zum Server verbinden und Daten übertragen. Nach ca. 1-2 Sekunden stellt er jedoch immer eine neue Verbindung zum Server her.
Dies ist laut Client auch vorgesehen, wenn er keine aktive Verbindung feststellt:

Delphi-Quellcode:
if (TCPClient.Connected) then
   //Irgendwas sinnvolles
else
   //Reconnect
Nur stellt er in einer TimerLoop anscheinend jedesmal fest, dass TCPClient.Connected = false ist.

Im Server wird die TCPServerDisconnect anscheinend nicht aufgerufen, der Server kriegt den Disconnect nicht mit.

Woran könnte das liegen?

Viele Grüße!
  Mit Zitat antworten Zitat