Italian [ SOLVED ] B4J Server Ftp

Xfood

Expert
Licensed User
Si utilizzo FTPServer.b4xlib,
Pensavo di essere riuscito nel mio intento 😭😭😭
Possibile che non ce un.modo per farlo funzionare in modalita' UI?
non capisco cosa cambia.
 

LucaMs

Expert
Licensed User
Longtime User
Mi facciano pensare... il Bridge (ovviamente B4A) ha il proprio FTP server ed ha anche la propria interfaccia grafica. C'è il sorgente, pubblicato da qualche parte sul sito (niente a che vedere con la FTPServer.b4xlib, ovviamente, che è nata molto più recentemente, e tantomeno con B4J).

Beh, scarico la tua prova e magari "nel frattempo" 😄:oops: cerco info sul sito.
 

Xfood

Expert
Licensed User
uhm...
Credo di averlo già scaricato giorni fa e che non ci fosse la libreria modificata.
La lib modificata ha solo la gestione del log
Comunque il primo post, ha il vecchio progetto,
Hai il b4bridge in b4j con ftpserver?
Mi passi il link...
Fammi sapere.
 

LucaMs

Expert
Licensed User
Longtime User
Hai il b4bridge in b4j con ftpserver?
No, appunto ho specificato che il Bridge è B4A. Ha il proprio server FTP e ovviamente la UI (è un'app pubblicata su Google Play!) ma è appunto B4A.
Fosse stata b4j, non avrei certo aspettato ad indicartela!

Il sorgente del Bridge (benché serva a poco, in questo caso, è sul sito, basta cercarlo).
 

Xfood

Expert
Licensed User
No, appunto ho specificato che il Bridge è B4A. Ha il proprio server FTP e ovviamente la UI (è un'app pubblicata su Google Play!) ma è appunto B4A.
Fosse stata b4j, non avrei certo aspettato ad indicartela!

Il sorgente del Bridge (benché serva a poco, in questo caso, è sul sito, basta cercarlo).
😭😭😭
Il grande @Erel che dice, non potrebbe abilitare la UI,
E gia tutto pronto.... solo lui puo aiutarci.
Perche non gli fai un fischio,
Magari a te da piu retta. 😜😜😜
 

LucaMs

Expert
Licensed User
Longtime User
😭😭😭
Il grande @Erel che dice, non potrebbe abilitare la UI,
E gia tutto pronto.... solo lui puo aiutarci.
Perche non gli fai un fischio,
Magari a te da piu retta. 😜😜😜
Non credo, lo avrebbe fatto già da un pezzo.

Cercando la faccenda, giorni fa, il consiglio era sempre quello di connettersi al server per via traverse (come MQTT).
Al limite si potrebbe FORSE fare anche aggiungendo un server websocket nello stesso progetto FTP, ma cosa ti cambierebbe? Dovresti sempre avviare un server (il websocket).

Cmq, il server è per te stesso o per eventuali clienti?
 

Xfood

Expert
Licensed User
Sto realizzando un programmino x rilavare inventario da terminale, e volevo scaricare un file txt tramite ftpserver da installare sul pc.
 

Xfood

Expert
Licensed User

Attachments

  • Screenshot_20200616-071133.jpg
    Screenshot_20200616-071133.jpg
    387.6 KB · Views: 176
  • Screenshot_20200622-105150.jpg
    Screenshot_20200622-105150.jpg
    250.1 KB · Views: 181

LucaMs

Expert
Licensed User
Longtime User
E se facessi fare all'app Android da server FTP? Conoscendo già cartelle e file
Sto realizzando un programmino x rilavare inventario da terminale, e volevo scaricare un file txt tramite ftpserver da installare sul pc.
Ma... vuoi inviare file da Android al PC o viceversa?
Perché potresti sempre installare il server nell'App Android!
 

Xfood

Expert
Licensed User
E se facessi fare all'app Android da server FTP? Conoscendo già cartelle e file

Ma... vuoi inviare file da Android al PC o viceversa?
Perché potresti sempre installare il server nell'App Android!
E piu semplice fare il pc come server, e inviare il file dal terminale, anche perche si potrebbero avere piu terminali nel negozio. Mi sa che devo prendere un serverino ftp extra.... cavolo, puo essere che tutti i servizi sono NO-UI?
Help @Erel
 

udg

Expert
Licensed User
Longtime User
Insomma tutto quello che ti occorre è inviare un file txt da Android a PC?
Perchè non utilizzare il semplice PostFile?
B4X:
Dim j As HttpJob
j.Initialize("", Me)
j.PostFile("http://192.168.10.10:61200/upload?type=file&name=term01.txt",File.DirInternal,"term01.txt")
Wait For (j) JobDone(j As HttpJob)
If j.Success Then
        Log(j.GetString)
        Log("upload 01 ok")
Else
        Log(j.ErrorMessage)
End If
j.Release
Sul server fai girare un programmino B4J/Jserver che tra le altre cose avrà un handle denomilnto "upload" (nell'esempio sopra)ved il cui scopo è ricevere un file e salvarlo in locale per poi aggiornare il DB.
Sempre con riferimento all'esempio, "type=" è utile se desideri inviare con lo stesso sistema anche altro. Ad esempio una stringa Che svolga il ruolo di "comando".
 

Xfood

Expert
Licensed User
Insomma tutto quello che ti occorre è inviare un file txt da Android a PC?
Perchè non utilizzare il semplice PostFile?
B4X:
Dim j As HttpJob
j.Initialize("", Me)
j.PostFile("http://192.168.10.10:61200/upload?type=file&name=term01.txt",File.DirInternal,"term01.txt")
Wait For (j) JobDone(j As HttpJob)
If j.Success Then
        Log(j.GetString)
        Log("upload 01 ok")
Else
        Log(j.ErrorMessage)
End If
j.Release
Sul server fai girare un programmino B4J/Jserver che tra le altre cose avrà un handle denomilnto "upload" (nell'esempio sopra)ved il cui scopo è ricevere un file e salvarlo in locale per poi aggiornare il DB.
Sempre con riferimento all'esempio, "type=" è utile se desideri inviare con lo stesso sistema anche altro. Ad esempio una stringa Che svolga il ruolo di "comando".
La parte del pc, puo essere UI?
Cioe il "servizio " posso metterlo nella systray,
Eventualmente stopparlo avviarlo, visualizzare eventuali log ecc..hai un esempio per il server?
Hai
 

udg

Expert
Licensed User
Longtime User
Sul server, come handle, potresti avere qualcosa del genere:
B4X:
Sub Handle(req As ServletRequest, resp As ServletResponse)
    If req.Method <> "POST" Then
        resp.SendError(500, "method not supported.")
        Return
    End If
    'we need to call req.InputStream before calling GetParameter.
    'Otherwise the stream will be read internally (as the parameter might be in the post body).
    Dim In As InputStream = req.InputStream
    Dim reqType As String = req.GetParameter("type")
    If reqType = "" Then
        resp.SendError(500, "Missing type parameter.")
        Return
    End If
    Select reqType
        Case "text"
            Dim tr As TextReader
            tr.Initialize(In)
            Log("Received text message: " & CRLF & tr.ReadAll)
            resp.Write("Message received successfully.")
        Case "file"
            Dim name As String = req.GetParameter("name")
            Dim out As OutputStream = File.OpenOutput("uploaded", name, False)
            File.Copy2(In, out)
            out.Close
            Log("Received file: " & name & ", size=" & File.Size("uploaded", name))
            resp.Write("File received successfully.")
    End Select
End Sub
 

Xfood

Expert
Licensed User
Sul server, come handle, potresti avere qualcosa del genere:
B4X:
Sub Handle(req As ServletRequest, resp As ServletResponse)
    If req.Method <> "POST" Then
        resp.SendError(500, "method not supported.")
        Return
    End If
    'we need to call req.InputStream before calling GetParameter.
    'Otherwise the stream will be read internally (as the parameter might be in the post body).
    Dim In As InputStream = req.InputStream
    Dim reqType As String = req.GetParameter("type")
    If reqType = "" Then
        resp.SendError(500, "Missing type parameter.")
        Return
    End If
    Select reqType
        Case "text"
            Dim tr As TextReader
            tr.Initialize(In)
            Log("Received text message: " & CRLF & tr.ReadAll)
            resp.Write("Message received successfully.")
        Case "file"
            Dim name As String = req.GetParameter("name")
            Dim out As OutputStream = File.OpenOutput("uploaded", name, False)
            File.Copy2(In, out)
            out.Close
            Log("Received file: " & name & ", size=" & File.Size("uploaded", name))
            resp.Write("File received successfully.")
    End Select
End Sub
Provo a vedere se cosi risolvo, hai per caso un progettino in b4j da allegare....😁😁😁😁
Sono un po a digiuno di questa problematica.
Grazie Mille..
 

udg

Expert
Licensed User
Longtime User
Rileggevo ora un tuo post precedente. Hai il problema del StartMessageLoop per l'app UI da mettere sul PC.
Potresti organoizzarti cosi:
- x terminali Android che catturano dati ed inviano file del tipo termoxx.txt al server
- 1 server (no-UI) che riceve sia i file txt che i comandi (v. oltre)
- 1 sw PC/Android (UI) che invia comandi al server

I comandi potranno essere di ogni genere. Da attiva/disattiva a mandami delle statistiche.
 
Top