AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Überprüfen, ob FTP-Verbindung noch steht (WinInet)
Thema durchsuchen
Ansicht
Themen-Optionen

Überprüfen, ob FTP-Verbindung noch steht (WinInet)

Ein Thema von Pfoto · begonnen am 5. Jan 2007 · letzter Beitrag vom 5. Jan 2007
Antwort Antwort
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#1

Überprüfen, ob FTP-Verbindung noch steht (WinInet)

  Alt 5. Jan 2007, 17:52
Hallo zusammen,

ich hänge gerade an folgendem Problem:

Die FTP-Verbindung wird ja für gewöhnlich nach einer bestimmten Zeit der Inaktivität abgebrochen (macht dies eigentlich der Server oder Windows?)

Der User soll zu einem beliebigen Zeitpunkt eine Datei z.B. hochladen können.
Jetzt wäre es gut, das Programm könnte überprüfen, ob die Verbindung noch steht,
anstatt grundsätzlich eine Neuanmeldung vorzunehmen.

Ich arbeite mit WinInet und habe bei MSDN folgende Funktion gefunden:

Delphi-Quellcode:
BOOL InternetQueryOption(
    IN HINTERNET hInternet OPTIONAL,
    IN DWORD dwOption,
    OUT LPVOID lpBuffer OPTIONAL,
    IN OUT LPDWORD lpdwBufferLength

{ Returns an indication whether this handle uses persistent connections. Can be one of these values: }
INTERNET_KEEP_ALIVE_UNKNOWN
INTERNET_KEEP_ALIVE_ENABLED
INTERNET_KEEP_ALIVE_DISABLED
Mich verwirren allerdings diese Buffer-Sachen,
bisher habe ich folgendes geschrieben:
Delphi-Quellcode:
var
  Buffer: Cardinal;
[...]
  If InternetQueryOption(
     fNet,
     INTERNET_OPTION_KEEP_CONNECTION,
     nil,
     Buffer) = Bool(INTERNET_KEEP_ALIVE_ENABLED) then
Ich habe zwar "Buffer" eingefügt, verstehe aber leider nicht genau,
warum diese Parameter vorhanden sind.

Zudem gibt die Funktion auch bei soeben gestarteter Verbindung ein
"False" zurück.

Weiß jemand Rat? Vielleicht gibt es ja auch eine ganz andere, passende Funktion dafür.


Dank und Gruß
Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat
Flips

Registriert seit: 17. Feb 2005
Ort: Sankt Wendel
491 Beiträge
 
Delphi 7 Professional
 
#2

Re: Überprüfen, ob FTP-Verbindung noch steht (WinInet)

  Alt 5. Jan 2007, 18:05
Hi.

Zu deinen Fragen:
Normalerweise hat der Server ein vorgegebenes Timeout, beispielsweise 300s. d.h. wenn 300s abgelaufen sind ohne das was passiert ist, dann trennt er die Verbindung.

Also zu deinem Timeoutproblem und dem Buffer da.
Wieso hällst du die Verbindung nicht einfach offen indem du das Timeout des Servers abfragst un dann immer 5s vor dem Timeout irgendeinen unnötigen Befehl wie dir oder einfach nur ping ausführst? So dürfte die Verbindung immer offen bleiben.
Philipp F.
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#3

Re: Überprüfen, ob FTP-Verbindung noch steht (WinInet)

  Alt 5. Jan 2007, 18:06
Zitat von Pfoto:
(macht dies eigentlich der Server oder Windows?)
Das macht der FTP - Server.

Ich weiß ja nicht, wie du die Daten auf den Server bringst (MSDN-Library durchsuchenFtpPutFile oder eine Verbindung aus MSDN-Library durchsuchenFtpOpenfile und MSDN-Library durchsuchenInternetWriteFile), aber ich würde an deiner Stelle mal gucken, was nachdem die Verbindung serverseitig getrennt wurde, und du die Datei auf den Server bringen willst, die Funktion MSDN-Library durchsuchenInternetGetLastResponseInfo für einen Rückgabewert liefert.

//edit:

@Flips:

Zitat von Flips:
Wieso hällst du die Verbindung nicht einfach offen indem du das Timeout des Servers abfragst un dann immer 5s vor dem Timeout irgendeinen unnötigen Befehl wie dir oder einfach nur ping ausführst?
Dafür gibt es den FTP - Befehl NOOP, den man bequem mit MSDN-Library durchsuchenFTPCommand ausführen kann. Problem ist nur, dass manche Server die Verbindung auch so nach z.B. 20 Minuten beenden...
  Mit Zitat antworten Zitat
Flips

Registriert seit: 17. Feb 2005
Ort: Sankt Wendel
491 Beiträge
 
Delphi 7 Professional
 
#4

Re: Überprüfen, ob FTP-Verbindung noch steht (WinInet)

  Alt 5. Jan 2007, 18:07
Zitat von Daniel G:
Zitat von Pfoto:
(macht dies eigentlich der Server oder Windows?)
Das macht der FTP - Server.
Das wollte ich damit sagen
Philipp F.
  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:55 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