vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: FTP Verbindungsabbruch verhindern 
Autor: PJ_Shorty
Datum: 06.08.05 16:44

Mein FTP Client funktioniert über die "wininet.dll".

Hab da leider keine Möglichkeit gefunden, einzelne Kommandos zu senden.
Wenn ich periodisch das Verzeichnis neu auflisten lasse, wird die Verbindung nicht getrennt.
Nachteil:
bei grossen Verzeichnissen wird das Programm in der Zeit blockiert.

Hier mein FTP-Modul:

Option Explicit
 
Public Declare Function InternetConnect Lib "wininet.dll" Alias _
        "InternetConnectA" (ByVal hInternetSession As Long, _
        ByVal sServerName As String, ByVal nServerPort As Integer, _
        ByVal sUsername As String, ByVal sPassword As String, _
        ByVal lService As Long, ByVal lFlags As Long, ByVal _
        lContext As Long) As Long
Public Declare Function InternetOpen Lib "wininet.dll" Alias _
        "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType _
        As Long, ByVal sProxyName As String, ByVal sProxyBypass _
        As String, ByVal lFlags As Long) As Long
 
Public Declare Function InternetCloseHandle Lib "wininet.dll" _
        (ByVal hInet As Long) As Integer
 
Public Declare Function FtpSetCurrentDirectory Lib "wininet.dll" _
        Alias "FtpSetCurrentDirectoryA" (ByVal hFtpSession As _
        Long, ByVal lpszDirectory As String) As Long
 
Public Declare Function FtpFindFirstFile Lib "wininet.dll" _
        Alias "FtpFindFirstFileA" (ByVal hFtpSession As Long, _
        ByVal lpszSearchFile As String, lpFindFileData As _
        WIN32_FIND_DATA, ByVal dwFlags As Long, ByVal dwContent _
        As Long) As Long
 
Public Declare Function InternetFindNextFile Lib "wininet.dll" _
        Alias "InternetFindNextFileA" (ByVal hFind As Long, _
        lpvFindData As WIN32_FIND_DATA) As Long
 
Public Declare Function FtpGetFile Lib "wininet.dll" Alias _
        "FtpGetFileA" (ByVal hFtpSession As Long, ByVal _
        lpszRemoteFile As String, ByVal lpszNewFile As String, _
        ByVal fFailIfExists As Boolean, ByVal dwFlagsAndAttributes _
        As Long, ByVal dwFlags As Long, ByVal dwContext As Long) _
        As Long
 
Public Declare Function FtpPutFile Lib "wininet.dll" Alias _
        "FtpPutFileA" (ByVal hFtpSession As Long, ByVal _
        lpszLocalFile As String, ByVal lpszRemoteFile As String, _
        ByVal dwFlags As Long, ByVal dwContext As Long) As Long
 
Public Declare Function FtpDeleteFile Lib "wininet.dll" _
        Alias "FtpDeleteFileA" (ByVal hFtpSession As Long, _
        ByVal lpszFileName As String) As Long
 
Public Declare Function FtpRenameFile Lib "wininet.dll" _
        Alias "FtpRenameFileA" (ByVal hFtpSession As Long, _
        ByVal lpszFromFileName As String, ByVal lpszToFileName _
        As String) As Long
 
Public Declare Function FtpCreateDirectory Lib "wininet" _
        Alias "FtpCreateDirectoryA" (ByVal hFtpSession As _
        Long, ByVal lpszDirectory As String) As Long
 
Public Declare Function FtpRemoveDirectory Lib "wininet" _
        Alias "FtpRemoveDirectoryA" (ByVal hFtpSession As _
        Long, ByVal lpszDirectory As String) As Long
 
Public Declare Function InternetGetLastResponseInfo Lib _
        "wininet.dll" Alias "InternetGetLastResponseInfoA" _
        (lpdwError As Long, ByVal lpszBuffer As String, _
        lpdwBufferLength As Long) As Long
 ...
(Mehr kann ich leider nicht posten)

Das Verzeichnis auflisten mach ich mit:

Public Sub fListDir(fDir As String)
    Dim hFile As Long, Result As Long
 
    ReDim FileList(0 To 0)
 
    If chFDir(fDir) Then
        MousePointer = vbHourglass
        If PrgLanguage = 1 Then Call StatusText("Lese Verzeichnis...")
        If PrgLanguage = 2 Then Call StatusText("Reading Path...")
        fData.cFileName = String(MAX_PATH, 0)
        hFile = FtpFindFirstFile(hConnection, Trim$(Text6.Text), fData, 0, 0)
        Call FileAdd
 
        Do
            fData.cFileName = String(MAX_PATH, 0)
            Result = InternetFindNextFile(hFile, fData)
            If Result <> 0 Then Call FileAdd
        Loop Until (Result = 0)
 
        Call InternetCloseHandle(hFile)
        Call GetStatus
        MousePointer = vbDefault
 
        If Left$(FileList(0).cFileName, 1) <> "." Then
            fData.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY
            fData.cFileName = "." & Chr$(0)
            Call FileAdd
            fData.cFileName = ".." & Chr$(0)
            Call FileAdd
        End If
    End If
End Sub
Nachtrag:

hab jetzt eine Möglichkeit gefunden, ich lasse einfach periodisch diesen Code ausführen:

fData.cFileName = String(MAX_PATH, 0)
hFile = FtpFindFirstFile(hConnection, Trim$(Text6.Text), fData, 0, 0)
Damit bleibt die Verbindung bestehen.
Danke für eure Antworten.

mfg

Shorty

------------------------------------------------

man lernt nie aus...

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
FTP Verbindungsabbruch verhindern846PJ_Shorty06.08.05 15:23
Re: FTP Verbindungsabbruch verhindern557Radeonmaster06.08.05 15:39
Re: FTP Verbindungsabbruch verhindern549Urot06.08.05 16:13
Re: FTP Verbindungsabbruch verhindern624PJ_Shorty06.08.05 16:44
Re: FTP Verbindungsabbruch verhindern543Urot06.08.05 17:08

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel