AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Prüfen ob Verbindung zu FTP-Server besteht
Thema durchsuchen
Ansicht
Themen-Optionen

Prüfen ob Verbindung zu FTP-Server besteht

Ein Thema von Samufi · begonnen am 29. Okt 2009 · letzter Beitrag vom 30. Okt 2009
Antwort Antwort
Samufi

Registriert seit: 27. Nov 2008
Ort: Güstrow
93 Beiträge
 
Turbo Delphi für Win32
 
#1

Prüfen ob Verbindung zu FTP-Server besteht

  Alt 29. Okt 2009, 22:16
Hallo,
ich Verbinde das Programm beim Strt mit einem FTP-Server, auf den dann häufig zugegriffen wird. Wenn aber jemand das Programm eine Weile laufen lassen würde und der Server die Verbindung kappt würden Error-Meldungen kommen. Ich möchte also in jeder Prozedur prüfen, ob die Verbindung zum FTP-Server noch besteht. Gibt es da eine andere Möglichkeit als den Rückgabewert von FtpGetFile, bzw. put- oder deletefile auszuwerten?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Prüfen ob Verbindung zu FTP-Server besteht

  Alt 29. Okt 2009, 22:19
Setz doch im Ereignis OnDisconnect eine Variable, die du dann prüfen kannst. Eventuell hat deine Komponente sogar eine entsprechende Eigenschaft, die du prüfen kannst.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Samufi

Registriert seit: 27. Nov 2008
Ort: Güstrow
93 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Prüfen ob Verbindung zu FTP-Server besteht

  Alt 29. Okt 2009, 22:39
Dann müsste doch aber das disconnecten von meinem Programm ausgehen oder nicht? Welches Objekt hat das Ereignis OnDisconneckt?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Prüfen ob Verbindung zu FTP-Server besteht

  Alt 29. Okt 2009, 22:44
Keine Ahnung. Du hast uns ja nicht gesagt, was du für Komponenten verwendest. Also die Indys haben das genannte Ereignis und auch die Eigenschaft.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Samufi

Registriert seit: 27. Nov 2008
Ort: Güstrow
93 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Prüfen ob Verbindung zu FTP-Server besteht

  Alt 29. Okt 2009, 23:00
Danke für die Antworten! Ich habe jetzt versucht, das ganze über die Fehlermeldungen der Up- und Downloadfunktionen zu machen - ich denke das könnte funktuionieren, bisher hatte ich aber noch nicht die Situation, weshalb ich nicht weiß, obs wirklich funktioniert. Ich hab also geschrieben
Delphi-Quellcode:
function TInetFTP.GetFile(const remotefile, localfile: string):Boolean;
begin
   if not FtpGetFile(FHSession, PChar(remotefile), PChar(localfile), False, FILE_ATTRIBUTE_NORMAL,
   GetTransferMode, 0) then
    begin
      connect(true); // Prozedur zum Verbinden
      if not FtpGetFile(FHSession, PChar(remotefile), PChar(localfile), False, FILE_ATTRIBUTE_NORMAL,
            GetTransferMode, 0) then
            result:=false
    end else result:=true;
end;
Ich hoffe, das ist nicht allzu großer Käse...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#6

Re: Prüfen ob Verbindung zu FTP-Server besteht

  Alt 29. Okt 2009, 23:03
Result könnte aber undefiniert sein. Besser wäre es so:
Delphi-Quellcode:
function TInetFTP.GetFile(const remotefile, localfile: string):Boolean;
begin
   if not FtpGetFile(FHSession, PChar(remotefile), PChar(localfile), False, FILE_ATTRIBUTE_NORMAL,
   GetTransferMode, 0) then
    begin
      connect(true); // Prozedur zum Verbinden
      result := FtpGetFile(FHSession, PChar(remotefile), PChar(localfile), False, FILE_ATTRIBUTE_NORMAL,
            GetTransferMode, 0);
    end else result:=true;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Prüfen ob Verbindung zu FTP-Server besteht

  Alt 30. Okt 2009, 00:45
Manche FTP-Server trennen die Verbindung falls für eine gewisse Zeit keine Aktivität festgestellt wird.
Um das zu verhindern muss in regelmässigen Abständen das NOOP-Kommando gesendet werden, damit der Server mitbekommt,
dass der Client noch am Leben ist.
NOOP = No Operation
Man braucht also einen Timer der z.B. alle 60s das NOOP-Kommando absendet.
Bei der WinInet-API sieht das ungefähr so aus:
Delphi-Quellcode:
procedure TInetFTP.NOOP;
begin
  if not FtpCommand(hConnect,False,FTP_TRANSFER_TYPE_BINARY,PChar('NOOP'),0,nil) then
  begin
    raise Exception.Create(SysErrorMessage(GetLastError()));
  end;
end;
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.054 Beiträge
 
Delphi 12 Athens
 
#8

Re: Prüfen ob Verbindung zu FTP-Server besteht

  Alt 30. Okt 2009, 01:02
Es gibt aber auch Server (gewisser Anbieter), welche das NOOP ignorieren und dennoch trennen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Prüfen ob Verbindung zu FTP-Server besteht

  Alt 30. Okt 2009, 01:48
Zitat von Samufi:
Danke für die Antworten! Ich habe jetzt versucht, das ganze über die Fehlermeldungen der Up- und Downloadfunktionen zu machen
Warum prüfst du nicht den Verbindungsstatus, wie ich es vorgeschlagen habe? Warum nimmst du es in Kauf, ins offene Messer zu rennen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz