none
Inet schmiert ab RRS feed

  • Frage

  • Hallo,

    ich werkle gerade an einer Anwendung unter Verwendung des Inet-Objekts, bei
    der alle 5 Sekunden eine Datei vom FTP-Server abgeholt wird. Das
    funktioniert eigentlich ganz gut, aber nach einer gewissen Laufzeit bleibt
    das Programm hängen, und der Debugger meldet mir, dass die nächste
    Inet-Anweisung nicht asugeführt werden kann. Wenn ich von Hand einen
    weiteren Inet-Befehl erzwinge, erfahre ich vom Debugger: Das Inet-Objkekt
    wurde von den Clients getrennt. Erst der Neustart des Programms löst das
    Problem, allerdings wird dadurch die gesammte Anwendung sinnlos.

    Da das Ereignis sehr unregelmäßig eintrifft (manchmal nach drei Minuten,
    manchmal nach einer halben Stunde), gehe ich davon aus, dass der FTP-Server
    manchmal irgend eine Zugriffsverzögerung erzeugt und das Inet-Objekt damit
    nicht umgehen kann. Da die Anwendung später einmal von allen möglichen
    Anwendern an allen möglichen FTP-Servern genutzt werden soll, bräuchte ich
    eine stabile Routine, die mit allen Unwägbarkeiten der FTP-Servers umgehen
    kann.

    Der Grund kann allerdings auch ein ganz anderer sein, auf den ich nicht
    komme.

    Hat jemand eine Idee?

    Danke,
    Emil
     
    Sonntag, 30. Mai 2010 10:45

Antworten

Alle Antworten

  • Hallo Emil,

    zunächst zur Klärung: Womit programmierst Du da gerade (VB.NET, VB Classic, VBA/ VB Script)?

    Empfohlene GetFTPFile beim Inet-Object, siehe Alternatives to the INet Object
    (auch wenn an etwas unpassender Stelle genannt)

    Gruß Elmar

    Sonntag, 30. Mai 2010 17:54
    Beantworter
  • Hallo Emil,

    Im folgenden Beispiel konnte ich eine Datei von dem FTP Server herunterladen (VB.NET).

    Es wurden verwendet das BackgroundWorker Steuerelement und einige Funktionen aus wininet.dll (wir sind in der asynchronen Welt und da kann etwas länger oder weniger dauern aber Du hast einen Fixen Takt für das herunterladen von 5 Sekunden).

    Du kannst prüfen wenn eine Datei fertig heruntergeladen ist einen Neuen Download starten usw.

    http://social.msdn.microsoft.com/Forums/de-DE/visualbasicde/thread/e147e6a8-ad26-442d-8e0d-f605d30eaa50#8b190e8d-5c41-486b-9407-eef2feda71e2

    Grüße,

    Robert

    Montag, 31. Mai 2010 06:28
    Moderator
  • Hallo Elmar,

    sorry, das habe ich vergessen: Ich arbeite mit VB6.

    Also, bei der in dem Artikel angeführten Alternative verstehe ich etwas nicht. Diese Funktion wird angeführt:

    Function GetHTTPFile(strURL)
        Dim objXML
        Dim strHTTPResponse

        Set objXML = CreateObject("Msxml2.XMLHTTP")

        Call objXML.Open("GET", strURL, False)
        Call objXML.Send()

        strHTTPResponse = objXML.responseText

        Set objXML = Nothing

        GetHTTPFile = strHTTPResponse
    End Function

    Aber strURL wird nicht definiert und nicht erklärt. Die Variable wird bei mir als Integer angezeigt, aber das macht irgendwie keinen Sinn. Ist das nicht der Pfad der Remotedatei? Und wo lege ich den lokalen Dateinamen für die heruntergeladenen Datei fest?

    Kannst Du mir vielleicht ein kurzes Codebeispiel geben, wie die Funtkion angewandt wird?

    Danke,
    Emil

     

    Mittwoch, 2. Juni 2010 06:30
  • Hallo Emil,

    URL ist hier im Sinne eines GET Request für HTTP zu verstehen.
    Übergibst Du eine URL mit ftp: kannst Du darüber einen FTP Request durchführen.

    Dem XMLHTTP ist ein Wikipedia Artikel und ein Wikibook "gewidmet",
    da Grundlage für Ajax und Co.

    Gruß Elmar

    Mittwoch, 2. Juni 2010 08:00
    Beantworter