Italian Chiacchiericci

LucaMs

Expert
Licensed User
Longtime User
Cioe'come faresti?, su wait for non sono ancora molto pratico,

Si, le credenziali li ho, devo connettermi e copiare un file su 50 ftp server diversi, (bilance) quindi qualche server ftp ( bilancia) potrebbe essere spenta, per cui
Vorrei scrivere un log tipo bilancia xxx non raggiuungibile.
B4X:
FTP.UploadFile(DeviceFolder, DeviceFile, True, ServerFilePath)
Wait For FTP_UploadCompleted (ServerPath As String, Success As Boolean)
If Not(Success) Then
    ' bilancia spenta
End If
 

Xfood

Expert
Licensed User
Cosi, prima devo trasferire il file, quindi attendere il timeout prima di avere il risultato.

Il Grande Capo E... secondo me dovrebbe aggiungere il risultato della connessione avvenuta.

Pazienza, se questo e' l'unico metodo, per adesso , utilizzo il tuo esempio.
 

LucaMs

Expert
Licensed User
Longtime User
Cosi, prima devo trasferire il file, quindi attendere il timeout prima di avere il risultato.

Il Grande Capo E... secondo me dovrebbe aggiungere il risultato della connessione avvenuta.

Pazienza, se questo e' l'unico metodo, per adesso , utilizzo il tuo esempio.
https://www.b4x.com/android/forum/threads/how-to-check-whether-ftp-connected.63974/post-404669

1624691254103.png


https://it.wikipedia.org/wiki/File_Transfer_Protocol

Molto migliori le risposte "non al volo" :)
In pratica si invia quel comando NOOP che funge da Ping (dovrebbe essere veloce, suppongo)
 

LucaMs

Expert
Licensed User
Longtime User
Un esempio di wait for per eseguire questo comando....?
Scrivi il comando (ora lo copio da là, senza verificare):
B4X:
FTPpro.SendCommand("NOOP","")
poi digita la sola W, premi TAB (viene automaticamente scritto Wait For), uno spazio, TAB, F ti aiuta a selezionare FTP, TAB ti elenca gli eventi, scegli il primo, CommandCompleted, TAB, inserisci il nome del tuo oggetto FTP (di solito proprio FTP) e invio.

Ti ho scritto il metodo generale per sfruttare il Wait For, meglio che mostrarti direttamente il codice.

P.S. ... che comunque sarebbe questo:
B4X:
    FTP.SendCommand("NOOP","")
    Wait For FTP_CommandCompleted (Command As String, Success As Boolean, ReplyCode As Int, ReplyString As String)
    If ReplyCode <> 200 Then
        ' Probabilmente bilancia spenta
    End If
 

LucaMs

Expert
Licensed User
Longtime User
B4X:
Wait For (FTP_PING) Complete(Connected As Boolean)
If Not(Connected) Then
    ' ...
End If

Private Sub FTP_PING As ResumableSub
    FTP.SendCommand("NOOP","")
    Wait For FTP_CommandCompleted (Command As String, Success As Boolean, ReplyCode As Int, ReplyString As String)
    Return (ReplyCode = 200)
End Sub
 

Star-Dust

Expert
Licensed User
Longtime User
La connessione è su un metodo privato e puoi accedere cosi.
Funziona con B4A e B4J usando la libreria Reflection che accede ai metodi privati di una classe
B4X:
ftp.Initialize("ftp","Host",21,"user","pass")
Dim r As Reflector
r.Target=ftp
Try
    r.RunMethod("connectIfNeeded")
    Log("connesso")
Catch
    Log("Non connesso: " & LastException.Message)
End Try
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
La connessione è su un metodo privato e puoi accedere cosi.
Funziona con B4A e B4J usando la libreria Reflection che accede ai metodi privati di una classe
B4X:
ftp.Initialize("ftp","Host",21,"dust","pass")
    Dim r As Reflector
    r.Target=ftp
    Try
        r.RunMethod("connectIfNeeded")
        Log("connesso")
    Catch
        Log("Non connesso: " & LastException.Message)
    End Try
meglio mettere uno Sleep, prima.
 

Star-Dust

Expert
Licensed User
Longtime User
meglio mettere uno Sleep, prima.
Io porto i boxer

Non serve perché la connessione la fa solo quando chiama il metodo, inizialize serve solo a passare i parametri
 

Star-Dust

Expert
Licensed User
Longtime User

Star-Dust

Expert
Licensed User
Longtime User
Sì, intendevo dire che è una brutta cosa che se crei un metodo privato in una tua classe B4X questa sia accessibile dall'esterno ugualmente, usando CallSub.
Siamo in tempo di pandemia le eccezioni sono all'ordine del giorno
 

LucaMs

Expert
Licensed User
Longtime User
Intanto non riesco a connettermi al bridge su smartphone tramite ftp, mentre usando FileZilla sì ?
(o meglio, nessuno dei modi per verificare la connessione scritti preDecentemente pare funzionare, non ho provato ad eseguire un List)
 

Star-Dust

Expert
Licensed User
Longtime User
Intanto non riesco a connettermi al bridge su smartphone tramite ftp, mentre usando FileZilla sì ?
(o meglio, nessuno dei modi per verificare la connessione scritti preDecentemente pare funzionare, non ho provato ad eseguire un List)
Io ho provato sul mio FTP Altervista e funziona
 
Top