Italian Installazione libreria SMB2

ptb_eta

Member
Buongiorno, ho provato a riapprofondire l'uso di SMB2 e ho trovato un vecchio thread con protagonista XFood che pare aver risolto brillantemente il mio problema:

E però, immagino per via dei numerosi tentativi fatti, probabilmente ho incasinato l'installazione delle librerie e non mi compare più la libreria SMB2 ma solo la jcifs-ng e questa dichiarazione per esempio:
Dim credentials As SMBCred

Mi da errore in compilazione
Errore nella linea: 46 (Main)
Dim credentials As SMBCred

Ho scaricato la libreria direttamente dal thread originale, in cui poi si trova anche l'aggiornamento:

Qualcuno che la usa può aiutarmi?
 

Sagenut

Expert
Licensed User
Longtime User
Io non l'ho mai usata, se però puoi allegare il progetto vediamo di aiutarti a risolvere l'errore per poi proseguire.
L'aiuto ti serve per B4A? B4J? Entrambi?
 

ptb_eta

Member
Intanto grazie. L'aiuto mi serve per B4A.
Allego il progetto, mi scuso già ora perchè è 'molto sporco', nel senso che ci sono dentro diversi esperimenti.
Quello su cui mi serve un aiuto è InviaSMB e InviaFTP.
Vorrei dare la possibilità di usarli entrambi a scelta dalle impostazioni (impostazione di scelta che ancora non c'è).
InviaSMB in particolare in questa versione funziona la copia del file con SMBInitialize fatto così:

smbClient.Initialize("smbClient_Copy", "", "term", "term00", sShare)

Quindi con utente e password, ma se devo copiare il file in una cartella condivisa che non ha bisogno di credenziali e a cui accedo liberamente da qualsiasi pc di rete e faccio l'initialize così:

smbClient.Initialize("smbClient_Copy", "", "", "", sShare)

Qualche idea del perchè?

Poi al momento non funziona la copia da pc a Android, la Sub Carica_Click, ma su questa ancora c'ho speso poco tempo.

Invece ho speso molto tempo nel tentativo di far funzionare la copia tramite ftp che a leggere qua dovrebbe essere semplicissimo, ma io ovviamente non sono riuscito.
Qua parte del codice:
B4X:
Sub InviaFTP
    'Dim localfile As String
    'Dim sf As Object
    
    
    'localfile=File.DirInternal & "/dati.txt"
    
    If File.Exists(File.DirInternal, "dati.txt") Then
        FTPClient.UploadFile(File.DirInternal, "dati.txt", True, "/files/dati.txt")
        Log("Upload in corso...")
        'Wait For (sf) FtpCliEvent_UploadCompleted (ServerPath As String, Success As Boolean)
        'If Success Then
        '    Log("File was uploaded successfully -> " & "dati.txt")
        '    FTPClient.Close
        'Else
        '    Log("Error uploading file - " & LastException.Message)
        'End If
  
    Else
        Log("Il file non esiste!")
    End If

End Sub

Sub FTP_UploadProgress (ServerPath As String, TotalUploaded As Long, Total As Long)
    Dim s As String
    s = "Uploaded " & Round(TotalUploaded / 1000) & "KB"
    If Total > 0 Then s = s & " out of " & Round(Total / 1000) & "KB"
    Log(s)
End Sub

Sub FTP_UploadCompleted (ServerPath As String, Success As Boolean)
    If Success Then
        Log("Upload completato con successo!")
    Else
        Log("Errore durante l'upload!")
    End If
End Sub

Premetto che il server FTP è testato e funzionante, nella cartella ci entro senza problemi con l'ftp di file manager plus, lo stesso per quanto riguarda la condivisione della cartella tramite SMB.

Ringrazio anticipatamente chiunque spenda anche solo un po' di tempo per aiutarmi, purtroppo oggi non potrò ricollegarmi probabilmente.
 

Attachments

  • CodQta.zip
    141.3 KB · Views: 104

ptb_eta

Member
Aggiornamento: diciamo che al momento la parte SMB funziona, rimane solo il problema della connessione senza utente e password.

Per l'ftp invece ci devo sbattere un po' la testa ancora, nel caso aprirò un thread specifico.

Grazie di nuovo
 

Sagenut

Expert
Licensed User
Longtime User
Scusa se non ho più risposto ma in questi giorni non ho praticamente tempo di stare al pc.
Per FTP assicurati di avere messo

FTPClient:
FTPClient.PassiveMode = True
subito dopo Initialize di FTP
Poi prova a modificare il codice così
B4X:
Sub InviaFTP
    'Dim localfile As String
  
  
    'localfile=File.DirInternal & "/dati.txt"
  
    If File.Exists(File.DirInternal, "dati.txt") Then
        Dim sf As Object = FTPClient.UploadFile(File.DirInternal, "dati.txt", True, "/files/dati.txt")
        Log("Upload in corso...")
        Wait For (sf) FTPClient_UploadCompleted (ServerPath As String, Success As Boolean) 'Verifica se FTPClient è giusto come EventName
    Else
        Log("Il file non esiste!")
    End If

End Sub

Sub FTPClient_UploadProgress (ServerPath As String, TotalUploaded As Long, Total As Long) 'Verifica se FTPClient è giusto come EventName
    Dim s As String
    s = "Uploaded " & Round(TotalUploaded / 1000) & "KB"
    If Total > 0 Then s = s & " out of " & Round(Total / 1000) & "KB"
    Log(s)
End Sub

Sub FTPClient_UploadCompleted (ServerPath As String, Success As Boolean) 'Verifica se FTPClient è giusto come EventName
    If Success Then
        Log("Upload completato con successo!")
    Else
        Log("Errore durante l'upload!")
    End If
End Sub
Fai attenzione che io ho usato FTPClient come EventName visto che non hai postato come lo hai inizializzato.
Quindi nel caso modifica con l'EventName che hai scelto.
 

Sagenut

Expert
Licensed User
Longtime User
Ho finalmente potuto controllare il tuo esempio e l'EventName andava bene come lo avevi messo tu.
Ti allego il tuo codice con le piccole modifiche commentate che ti avevo già proposto.
 

Attachments

  • CodQta.zip
    141.4 KB · Views: 101

ptb_eta

Member
Ancora nulla, ma visto che a questo punto do per scontato che il codice sia giusto verifico meglio che non ci sia un problema di connessione all'ftp e non nel codice.

Grazie mille!!!
 

Sagenut

Expert
Licensed User
Longtime User
ma visto che a questo punto do per scontato che il codice sia giusto
No no, non darlo per scontato.
Se hai messaggi di errore postali, oppure spiega cosa succede.
 
Top