Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [VB.NET] Connessione FTP della wininet.dll non termina la sessione

    Ciao a tutti.
    Sto usando le funzioni della libreria "wininet.dll" per connettermi ad un server FTP e ricevere, inviare e cancellare dati.
    Funziona tutto correttamente tranne la disconnessione, che si fa con la funzione
    codice:
    Declare Function InternetCloseHandle Lib "wininet.dll" (ByRef hInternet As Integer) As Boolean
    Infatti mi rimangono aperte un sacco di sessioni sul server FTP, perché ogni volta che mi connetto per eseguire un'operazione, poi non mi si disconnette.
    Qualcuno si è già imbattuto in questo problema?
    Serve che posto il codice?

    PS: sto programmando sul compact framework per dispositivi mobili (il dispositivo ha windows mobile 6)

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    La InternetCloseHandle serve a chiudere l'handle.

    Per concludere la sessione invii il comando QUIT al server e attendi la risposta ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Ci ho provato ma sembra che il metodo "FtpCommand" non funzioni perché il server non esegue nessuno dei comandi che gli mando.
    Forse sbaglio qualcosa nella dichiarazione del metodo o nell'invio del comando:

    codice:
    Public Declare Function FtpCommand Lib "wininet.dll" Alias "FtpCommandA" _
        (ByVal hFtpSession As Long, ByVal fExpectedReponse As Boolean, _
        ByVal dwFlags As Long, ByVal lpszCommand As String, _
        ByVal dwContext As Long, ByVal phFtpCommand As Long) As Boolean
    codice:
    Dim RC As Boolean
    Dim hResponse
    INet = InternetOpen("ftp", 1, vbNullString, vbNullString, 0)
    INetConn = InternetConnect(INet, server_ftp, porta_ftp, user_server_ftp, password_server_ftp, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0)
    
    If INetConn <> 0 Then
    RC = FtpCommand(INetConn, True, FTP_TRANSFER_TYPE_ASCII, "QUIT" & nome_file & " " & nome_file_2, 0, hResponse)
    End if

  4. #4
    Anzi a dire il vero inviando il comando QUIT mi restituisce un valore "true" come se l'operazione fosse andata a buon fine, ma in realtà la sessione FTP rimane aperta.

    codice:
    Dim command As String = "QUIT" & vbCrLf
    Dim hOutConn&
    RC = FtpCommand(INetConn, False, FTP_TRANSFER_TYPE_ASCII, command, 0, hOutConn&)
    If RC = True Then
       MessageBox.Show("Il bye è andato a buon fine")
    Else
       MessageBox.Show("Niente bye")
    End If
    Per capirci, l'esecuzione di questo codice mi fa vedere sempre la finestrella con scritto "Il bye è andato a buon fine", ma in realtà non è vero.
    Ho risolto (parzialmente), facendo terminare la connessione GPRS subito dopo aver fatto i miei trasferimenti. Chiudendo la connessione subito allora si termina anche la sessione FTP sul server. Non è una soluzione elegantissima ma è l'unica al momento che possa andare bene

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.