Italian [B4A] tasferire file da android a pc Tcp/ip

Star-Dust

Expert
Licensed User
Longtime User
purtroppo ho gia visto e rivisto, ma non riesco a venirne a capo.
Io potrò guardare martedì, sto andando in "vacanza" per un giorno :oops:
 

Xfood

Expert
Licensed User
buona vacanza..... tranquillo, grazie
se trovo una soluzione la pubblico qui,
altrimenti vuol dire che non ho trovato la soluzione
 

Star-Dust

Expert
Licensed User
Longtime User
Credo che devi usare copy (e non copy2) per scaricare dal pc ad Android

Copy2 e da Android a Pc
 
Last edited:

Xfood

Expert
Licensed User
non me lo compila neanche

1635702202284.png



allego tutto il codice

grazie per tutto
B4X:
Public Sub SMB_TRASMETTI As ResumableSub
    Dim cFileTrasf As String
    Dim cPathFileOut As String
    
    Dim credentials As SMBCred
    credentials.Initialize
    credentials.Domain = ""
    credentials.Username =B4XPages.MainPage.MappaParametri.Get("USERSMB")
    credentials.Password =B4XPages.MainPage.MappaParametri.Get("PSWSMB")
    
    cFileTrasf=Nomefile
    cPathFileOut=File.DirDefaultExternal
    
'    cPathFileOut=File.DirDefaultExternal ' & "/download/"
'    cPathOut= "ORDINE.OUT"
    AttesaShow("Trasferimento ... ",$"Attendere   ${CRLF}${Modo} ${Nomefile} ${CRLF} SMB://${B4XPages.MainPage.MappaParametri.Get("SERVERSMB")}"$)

    
    Try
    
    If Modo.ToUpperCase="INVIA" Then    '   questo e' ok
            credentials.Share = "smb://" & B4XPages.MainPage.MappaParametri.Get("SERVERSMB") & B4XPages.MainPage.MappaParametri.Get("PTHDATIOUTSMB") ' & "/" & "c-drive/FTP/"
              smbClient.Initialize("smbClient_Copy", credentials.Domain, credentials.Username,credentials.Password, credentials.Share)
            Wait For smbClient_Copy_Resource(success As Boolean, smbobjres As Object,smbobj As Object, info As String)
            If success = False Then
                AttesaHide
                Return False
            End If
            
        If smbobjres <> Null And smbobj <> Null And info = "OK" Then
                Dim smbResource As SMBResource = smbobjres
                smbClient.Copy2(cPathFileOut,cFileTrasf,smbResource, cFileTrasf)
                'Wait For smbclient_copy_copyresult(success As Boolean, path As String, filename As String)
                Wait For smbClient_Copy_Copy2Result(success As Boolean, path As String, filename As String)
                If success = False Then
                    'bB = False
                    Log("ERRORE COPIA")
                Else
                    Log("copia ok")
                End If
                Sleep(0)
            End If
    
    Else   'RICEVI     non va
            '    PTHDATIINSMB
            credentials.Share = "smb://" & B4XPages.MainPage.MappaParametri.Get("SERVERSMB") & B4XPages.MainPage.MappaParametri.Get("PTHDATIOUTSMB")
            smbClient.Initialize("smbClient_Copy", credentials.Domain, credentials.Username,credentials.Password, credentials.Share)
            Wait For smbClient_Copy_Resource(success As Boolean, smbobjres As Object,smbobj As Object, info As String)
            If smbobjres <> Null And smbobj <> Null And info = "OK" Then
                Dim smbResource As SMBResource = smbobjres
                
            '    smbClient.Copy2(cPathFileOut,cFileTrasf,smbResource, cFileTrasf)
                'provato anche cosi
                'smbClient.copy(cPathFileOut,cFileTrasf,smbResource, cFileTrasf)
                ' e cosi
                smbClient.copy(cFileTrasf,smbResource,cPathFileOut, cFileTrasf)
                Wait For smbClient_Copy_CopyResult(success As Boolean, path As String, filename As String)
                'Wait For smbClient_Copy_Copy2Result(success As Boolean, path As String, filename As String)
                If success = False Then
                    'bB = False
                    Log("ERRORE COPIA")
                Else
                    Log("copia ok")
                End If
                Sleep(0)
            End If

    
    End If

    Catch
        AttesaHide
        Return False
    End Try
    AttesaHide
Return success
 

Xfood

Expert
Licensed User
Risolto....
Grazieeeee



ecco il codice corretto
B4X:
 Else   'RICEVI
            '    PTHDATIINSMB
            credentials.Share = "smb://" & B4XPages.MainPage.MappaParametri.Get("SERVERSMB") & B4XPages.MainPage.MappaParametri.Get("PTHDATIOUTSMB") & cFileTrasf
            smbClient.Initialize("smbClient_Copy", credentials.Domain, credentials.Username,credentials.Password, credentials.Share)
            Wait For smbClient_Copy_Resource(success As Boolean, smbobjres As Object,smbobj As Object, info As String)
            If smbobjres <> Null And smbobj <> Null And info = "OK" Then
                Dim smbResource As SMBResource = smbobjres
                
                'smbClient.Copy2(cPathFileOut,cFileTrasf,smbResource, cFileTrasf)
                'provato anche cosi
                smbClient.copy(smbResource,cPathFileOut, cFileTrasf)
            
                ' e cosi
                'smbClient.copy(cFileTrasf,smbResource,cPathFileOut, cFileTrasf)
                Wait For smbClient_Copy_CopyResult(success As Boolean, path As String, filename As String)
                'Wait For smbClient_Copy_Copy2Result(success As Boolean, path As String, filename As String)
                If success = False Then
                    'bB = False
                    Log("ERRORE COPIA")
                Else
                    Log("copia ok")
                End If
                Sleep(0)
            End If

in pratica il file che si trova sul pc deve essere inserito nelle credenziali
credentials.Share = "smb://" & B4XPages.MainPage.MappaParametri.Get("SERVERSMB") & B4XPages.MainPage.MappaParametri.Get("PTHDATIOUTSMB") & cFileTrasf

tradotto e' cosi:
credentials.Share = "smb://192.168.1.100/c-drive/preleva/setup.ini"
e poi il copy in questo modo....
smbClient.copy(smbResource,cPathFileOut, cFileTrasf)
 

dibesw

Active Member
Licensed User
Longtime User
provato con SMB2 e tutto funziona abbastanza facilmente
piccolo riassunto per quello che ho fatto
magari puo servire a qualcuno



la libreia l'ho presa da qui





B4X:
#AdditionalJar: slf4j-api-1.7.25.jar
#AdditionalJar: bctls-jdk15on-1.58.0.0.jar
#AdditionalJar: bcprov-jdk15on-1.59.jar


Sub Class_Globals
Public smbClient As SMBClient
Public glRes, github As SMBResource
End Sub

Private Sub BtnTrasmetti_Click
Dim cPathFileOut as string
Dim cPathOut as string
      cPathFileOut=File.DirDefaultExternal
      cPathOut= "ORDINE.OUT"
                                          ' dominio,Utente,Password,RisorsaPc_Condivisa
    smbClient.Initialize("smbClient_Copy", "", "Utente","Password", "smb://192.168.1.17/c-drive/FTP/")
    Wait For smbClient_Copy_Resource(success As Boolean, smbobjres As Object,smbobj As Object, info As String)
    If smbobjres <> Null And smbobj <> Null And info = "OK" Then
        Dim smbResource As SMBResource = smbobjres
                   
        smbClient.Copy2(cPathFileOut,cPathOut,smbResource, cPathOut)
        Wait For smbclient_copy_copyresult(success As Boolean, path As String, filename As String)
            'Wait For smbClient_Copy_Copy2Result(success As Boolean, path As String, filename As String)
            If success = False Then
                'bB = False
                Log("ERRORE COPIA")
            Else
                Log("copia ok")
            End If
            Sleep(0)
    End If
End Sub  

Sub smbclient_copy_copyprogress(totalBytes As Long, path As String, filename As String)
    Log($"SMBClient_CopyProgress(${totalBytes} : ${path}:${filename})"$)
End Sub

Sub SMBClient_CopyResult(success As Boolean, path As String, filename As String)
    Log($"SMBClient_CopyResult(${success})"$)
    Return success
End Sub
OK Xfood ho provato il tuo "trasmetti_click" e funziona alla grande.
Solo una cosa volevo chiederti
Per trasferire 30kb ci mette circa 30 secondi
Ma è normale questo?

Grazie!!!
 

Xfood

Expert
Licensed User
OK Xfood ho provato il tuo "trasmetti_click" e funziona alla grande.
Solo una cosa volevo chiederti
Per trasferire 30kb ci mette circa 30 secondi
Ma è normale questo?

Grazie!!!
molto strano, a me copia molto veloce, avvolte ho la sensazione che non ha copiato di quando e veloce,
su windows hai attivato il protocollo smb?
 

dibesw

Active Member
Licensed User
Longtime User
molto strano, a me copia molto veloce, avvolte ho la sensazione che non ha copiato di quando e veloce,
su windows hai attivato il protocollo smb?
Certo, altrimenti non avrebbe funzionato.
Questo era un programma che avevo fatto anni fa in SMB1 (SMB1 che ha smesso di funzionare) e all'epoca era velocissimo.
Ora che sono passato a SMB2 ho questo problema.
La cartella di destinazione è pure condivisa everyone, è esclusa dall'antivirus è ho anche disattivato il firewall.
Proprio non capisco
Una domanda: ma tu hai win10 o win11?

Devo fare un po di prove...
 

Xfood

Expert
Licensed User
controlla tutte le voci che ti ho segnalato devono essere abilitate tranne la voce
rimozione automatica SMB, COME DA SCREEN
 
Top