Italian jcifs-ng SMB-Client (SMB2) copia da pc windows 10 a device

patatonj

Member
Licensed User
Longtime User
Ciao,

qualcuno ha gia avuto a che fare con la libreria jcifs-ng SMB-Client (SMB2) e magari ha anche qualche consiglio su come implementare la copia da windows 10 a device?
Starei venendo scemo....???

Grazie in anticipo
 

giannimaione

Well-Known Member
Licensed User
Longtime User
aspè, ti posto qualche esempio
@patatonj ; ho letto velocemente il tuo primo post, senza comprendere lo scenario:
  • presumo che la cartella condivisa samba risiede su un computer win10
  • la copia va "eseguita" da una app android
  • ho visto che questa libreria ha molti metodi e proprietà, e va utilizzata con altre librerie aggiuntive (in futuro ci potrebbero essere problemi di compatibilità con le nuove versioni android)
  • perché non utilizzare la libreria SMB (version 1.10) ???
non ti sono stato di aiuto, ma chiarisci questi punti e vediamo se è possibile darti qualche suggerimento.
 
Last edited:

patatonj

Member
Licensed User
Longtime User
Ciao @Gianniamione e intanto grazie per l'aiuto,

ti rispondo alle domande sperando di chiarire un po di più...

- presumo che la cartella condivisa samba risiede su un computer win10
corretto la cartella è condivisa su un Pc win10 19042.630 con ip statico

- la copia va "eseguita" da una app android
Si, corretto. L'idea è quella di creare un file di testo su una cartella che viene creata al primo avvio dell'app (ovviamente le successive volte verifico la sua presenza),
dopo di che , copiare il file che creo da questa cartella a quella condivisa su Pc con Windows

- perché non utilizzare la libreria SMB (version 1.10) ???
Ho utilizzato per diverso tempo questa libreria ma pare che con la versione di Windows 10 non funzioni più

Attendo tuoi esempi e ti ringrazio tantissimo???
 

giannimaione

Well-Known Member
Licensed User
Longtime User
in genere uso questi comandi:
B4X:
smb.SetCredentials(user, password, dominio)
smb.Initialize("smb")
dove user = utente configurato sul computer win10, e password = la password ;
dominio = "" (stringa vuota)
B4X:
smb.ListFiles("smb://" & server & "/" & cartella & "/", "*.txt)
server = indirizzo ip del win10, ma va bene anche il nome del computer
cartella condivisa
B4X:
Sub smb_ListCompleted (Url As String, Success As Boolean, Entries() As SMBFile)
    If Success = True Then
        PrendiFile (Entries, Url)
    Else
        Log(LastException.Message)
        btExit_Click
    End If
End Sub
'
Private Sub PrendiFile (elenco() As SMBFile, url As String)
    For i = 0 To elenco.Length - 1
        Dim nomefile As String = elenco(i).Name
        smb.DownloadFile(url, nomefile, cartellaAndroid, nomefile)
        wait for smb_DownloadCompleted (url As String, RemoteFile As String, Success As Boolean)

    Next
    scriviDati
End Sub
 

amorosik

Expert
Licensed User
Ma usando questa libreria e' possibile trasferire file da app Android verso server smb anche se Android e' collegato a rete dati via internet e deve passare attraverso router per arrivare al pc con Windows ed smb server?
Se si, che protocolli/porte e' necessario aprire sul router?
 

giannimaione

Well-Known Member
Licensed User
Longtime User
Quando si accede dall'esterno di una rete locale, bisogna fare i conti con la sicurezza. Detto ciò la scelta è tra SMB oppure FTP.
In ogni caso bisogna "aprire/configurare" le porte del router... in genere la 21 per FTP, 445 SMB
 

patatonj

Member
Licensed User
Longtime User
in genere uso questi comandi:
B4X:
smb.SetCredentials(user, password, dominio)
smb.Initialize("smb")
dove user = utente configurato sul computer win10, e password = la password ;
dominio = "" (stringa vuota)
B4X:
smb.ListFiles("smb://" & server & "/" & cartella & "/", "*.txt)
server = indirizzo ip del win10, ma va bene anche il nome del computer
cartella condivisa
B4X:
Sub smb_ListCompleted (Url As String, Success As Boolean, Entries() As SMBFile)
    If Success = True Then
        PrendiFile (Entries, Url)
    Else
        Log(LastException.Message)
        btExit_Click
    End If
End Sub
'
Private Sub PrendiFile (elenco() As SMBFile, url As String)
    For i = 0 To elenco.Length - 1
        Dim nomefile As String = elenco(i).Name
        smb.DownloadFile(url, nomefile, cartellaAndroid, nomefile)
        wait for smb_DownloadCompleted (url As String, RemoteFile As String, Success As Boolean)

    Next
    scriviDati
End Sub

Grazie Gianni...

  • in questo esempio, stiamo parlando della libreria che utilizzo io oppure SMB ?(la versione SMB v1, come scrivevo sopra, non funziona)
  • sempre in questo esempio, prelevo un file con il comando download da un Pc/Server Windows verso Android....viceversa uso Upload?
attendo tue?
 

patatonj

Member
Licensed User
Longtime User
Ciao Ganni,

questo è l'errore che ricevo con le stringhe che mi hai inviato tu: ?

ListFiles failed : (SmbException) jcifs.smb.SmbException: Failed to connect: 0.0.0.0<00>/192.168.1.102
jcifs.util.transport.TransportException
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:209)
at java.net.SocketInputStream.read(SocketInputStream.java:139)
at jcifs.util.transport.Transport.readn(Transport.java:29)
at jcifs.smb.SmbTransport.peekKey(SmbTransport.java:388)
at jcifs.smb.SmbTransport.negotiate(SmbTransport.java:288)
at jcifs.smb.SmbTransport.doConnect(SmbTransport.java:319)
at jcifs.util.transport.Transport.run(Transport.java:241)
at java.lang.Thread.run(Thread.java:764)
at jcifs.util.transport.Transport.run(Transport.java:258)
at java.lang.Thread.run(Thread.java:764)

leggevo che il problema è relativo al fatto che la versione Windows 10 che è montata (nel mio caso la build 19042.630), non si riesce piu ad accedere alle cartelle condivise.
Per questo motivo mi ero spostato sulla libreria che ho descritto nel Tread
Dovrò abbandonare l'idea di copia su wifi?
 

giannimaione

Well-Known Member
Licensed User
Longtime User
ho eseguito ulteriori test:
win 10 home
versione 20H2
build 19042.630
utente con password, e cartella condivisa

computer in wifi + device in wifi
il tutto funziona bene. lettura cartella, download, upload, cancellazione file.txt su cartella remota.
 

patatonj

Member
Licensed User
Longtime User
Niente da fare....
non so piu cosa poter controllare. ???
Ho anche disabilitato il firewall ma l'errore è lo stesso che ho già postato.
L'unica cosa che cambia è che io ho win 10 pro
 

giannimaione

Well-Known Member
Licensed User
Longtime User
Hai modo di pubblicare parte del codice?
 

patatonj

Member
Licensed User
Longtime User
Si, certo ed anzi grazie per la pazienza...

B4X:
Sub Process_Globals
    Dim SMB1 As SMB
 
End Sub

Sub Globals
    Dim list1 As ListView
End Sub

sub Activity_Create(FirstTime As Boolean)
    SMB1.SetCredentials("MIO USER","MIA PASSWORD","")
    SMB1.Initialize("SMB1")
 
    SMB1.ListFiles("smb://IP MIO COMPUTER/CARTELLA CONDIVISA/"","")
    list1.Initialize("list1")
     Activity.AddView(list1,0,50,100%x,100%y)
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub SMB1_ListCompleted(Url As String, Success As Boolean, Entries() As SMBFile)
  If Not(Success) Then
      Log("ListFiles failed : " & LastException)
  Else
    For i = 0 To Entries.Length - 1
        list1.AddSingleLine(Entries(i).Name & " " & DateTime.Date(Entries(i).LastModified))
        Log(Entries(i).Directory)
        Log(DateTime.Date(Entries(i).LastModified))
        Log(Entries(i).Parent)
        Log(Entries(i).Size)
    Next
  End If
End Sub
 

giannimaione

Well-Known Member
Licensed User
Longtime User
@patatonj
il boss ti ha risposto
jcifs-ng

mi dispiace non poterti essere d'aiuto, ma non ho particolari conoscenze con questa libreria;
 

Luciano Anselmetti

Member
Licensed User
Buondì a tutti, la smb v1 in W10 c'è ma normalmente è disattiva: bisogna attivarla specificatamente tramite Start, Pannello Controllo stile W7 (scrivendo "pannello di controllo" salta fuori...), Programmi e funzionalità, Attivazione o disattivazione delle funzionalità Windows ed attivare il "Supporto per condivisione file SMB 1.0/CIFS". Purtroppo non so come arrivare alla stessa finestra dalle impostazioni stile Win10 ?


2020-12-16 12_15_07-Clipboard.png
 

patatonj

Member
Licensed User
Longtime User
Buondì a tutti, la smb v1 in W10 c'è ma normalmente è disattiva: bisogna attivarla specificatamente tramite Start, Pannello Controllo stile W7 (scrivendo "pannello di controllo" salta fuori...), Programmi e funzionalità, Attivazione o disattivazione delle funzionalità Windows ed attivare il "Supporto per condivisione file SMB 1.0/CIFS". Purtroppo non so come arrivare alla stessa finestra dalle impostazioni stile Win10 ?


View attachment 104479

meraviglioso!!!!!!!
funziaaaaaaaaa????
 

giannimaione

Well-Known Member
Licensed User
Longtime User
ecco perchè nei miei test ha sempre funzionato! il trucco c'è e si vede;
di fatto bisogna "sempre" ricordarsi di attivare smb v1 su eventuali nuovi pc ... non è proprio una soluzione ottimale, ma va bene così.
 
Top