Italian B4J ... Applicazione per scambio stringhe ...

marco.canta

Active Member
Licensed User
Longtime User
Buongiorno, devo realizzare un app fatta in B4J che gira su tre PC e che tramite rete lan permetta ai tre programmi di scambiarsi stringhe di dati. (es. stringa "AZX32DD11").
Ci uno dei tre PC è il supervisore che quando necessario interpella gli altri due programmi per ricevere o inviare stringhe di dati.

Cosa utilizzare ? ... io avevo pensato AsyncStream
Qualche suggerimento o esempio da studiare ?

Grazie Marco
 

marco.canta

Active Member
Licensed User
Longtime User
Erel mi suggerisce "MQTT" ... ma sinceramente non conosco se non superficialmente.
Chi mi puo dare suggerimenti e qualche esempio "Semplice" ...

Grazie
 

maXim

Active Member
Licensed User
Longtime User

marco.canta

Active Member
Licensed User
Longtime User
Grazie maXim

Sto cercando di capirci qualcosa ... ma non è semplice.

Primo step vorrei creare un Broker mio ... leggendo alcuni post di Erel ho scritto questo :

B4X:
#Region  Project Attributes
    #MainFormWidth: 450
    #MainFormHeight: 230
#End Region

Sub Process_Globals
    Private fx As JFX
    Private MainForm As Form
    Dim Broker As MqttBroker
    Private btnChiudi As Button
End Sub

Sub AppStart (Form1 As Form, Args() As String)
    MainForm = Form1
    'MainForm.SetFormStyle("UNIFIED")
    MainForm.RootPane.LoadLayout("Layout1")
    MainForm.Show

      Broker.Initialize ( "", 51041)     'primo parametro è il nome dell'evento.  Non è attualmente utilizzata.
    Broker.SetUserAndPassword("MyID","123456")
      Broker.Start
'      StartMessageLoop 'Non-UI app
End Sub


Sub btnChiudi_MouseClicked (EventData As MouseEvent)
    ExitApplication
End Sub


Potrebbe funzionare ? Basta cosi poco ?

Altro domanda ... come faccio a collegare un MQTT Client al mio Broker ?

Grazie Marco
 

LucaMs

Expert
Licensed User
Longtime User
Sicuro che ti serviranno sempre e soltanto stringhe di dati?

Capisco che ormai hai iniziato con MQTT (che io non conosco bene ma suppongo sia molto utile), ma puoi trovare diversi esempi di web server sviluppati da Erel, come ad esempio la Chat, che forse è il più simile).
 

marco.canta

Active Member
Licensed User
Longtime User
Ciao LucaMs, si principalmente stringhe. A dirti il vero sto ancora cercando la strada piu semplice e veloce per scambiarme questi dati tramite Lan.
Questa sera daro un occhiata anchr al tuo suggerimento
Vorrei anche poter abilitare i client o pc remoti che si possono connettere (riconoscendoli tramite IP).

Qualsiasi suggerimento é sempre ben gradito
 

LucaMs

Expert
Licensed User
Longtime User
Se userai un web server, cioè un oggetto websocket:
B4X:
Dim RemoteIP As String = WebSocket1.UpgradeRequest.RemoteAddress
 

marco.canta

Active Member
Licensed User
Longtime User
Ho fatto un po di prove con diverse soluzione, ma fin'ora ho fatto solo tanta confusione e mi sono perso. :(

Cerco di riassumere quello che vorrei fare, cosi da darvi anche modo di consigliarmi.

Il tutto fatto in B4J ... un PC fa da supervisore e da gestore dati ... uno o piu Clinet devo connettersi se abilitati, ed essere interrogati dal Supervisore il quale riconoscendo il client interrogato decise de inviare o ricevere i dati in base alle necessita.

Spero di essere stato chiaro e aver fatto un quadro completo.

Grazie per gli Help :):):)
 

LucaMs

Expert
Licensed User
Longtime User
Io, come detto, userei un web server (ma solo perché non conosco MQTT).

Il tutto dovrà funzionare soltanto in rete locale? Lo chiedo ANCHE perché riconoscere i client non è semplicissimo (usare l'IP può andare bene, ma se questi sono fissi e di solito non lo sono).

Client B4J non ne ho fatti, ma non dovrebbe essere complicato, devi sempre usare un websocket per comunicare col server b4j "supervisore".

Darti suggerimenti... più che dirti che ci sono esempi sia di MQTT che di web server... vorrebbe dire svilupparti il progetto, non so come altro aiutarti.
 

Luciano Veneziano

Active Member
Licensed User
Non c'è niente di chiaro. chi è il server e chi sono i client? Se il server interroga i client allora sono i client ad essere server.
 

LucaMs

Expert
Licensed User
Longtime User
Usando i websocket non c'è questo problema. Certo, la connessione viene richiesta dai client, non dal server, ma poi può tranquillamente essere il server ad inviare richieste.
 
Top