Italian [B4J] come inviare un dato o un "segnale" ad una applicazione B4J ?

Star-Dust

Expert
Licensed User
Longtime User
No era che non avevano PC e ci arrangiamo con l'aula di sistemi che avevano solo quello per programmare

Serviva per costruire apparecchi elettronici che si interfacciavano con una CPU. Infatti vedi la millefori
 
Last edited:

amorosik

Expert
Licensed User
scenario:
  • rete locale di pc windows
  • su pc "A" è in esecuzione una applicazione/servizio B4J (dormiente) che è in attesa di ricevere un qualcosa, un segnale (dagli altri pc), per potersi svegliare e svolgere il suo compito
in pratica sul pc "A" gira questa applicazione B4J, e resta in attesa di ricevere una info, un bit, un drin-drin, da uno degli altri pc della stessa rete;
vorrei escludere soluzioni tramite socket;


Hai poi scelto cosa per far comunicare ste benedette macchine?
 

giannimaione

Well-Known Member
Licensed User
Longtime User
oramai sono in ballo e quindi entro in pista con un bel socket
 

amorosik

Expert
Licensed User
Porc... esistono davvero allora
Pensavo ci fossero solo nei manuali della preistoria informatica
Le memorie a nucleo di ferrite le ho visto su Youtube ci sono dei video splendidi di una ciurma che ha riattivato il modulo cpu del Lem, quello che e' andato sulla luna (almeno cosi dicheno), gente parte Russia o giu' di li
 

hatzisn

Well-Known Member
Licensed User
Longtime User
oramai sono in ballo e quindi entro in pista con un bel socket

Ci saranno molti clienti o solo uno per volta? Se ci sara un cliente per volta posso venderti una B4X lib che ho svilupato ed e cosi facile usarla come il codice seguente:


For client:

B4X:
Sub Process_Globals
    Dim cm as Comms
End Sub

Sub InitializeClient
    cm.Initialize
    cm.InitializeConnectFromMe(Me, "cm", MainForm.RootPane)

   
    cm.DataReceiveType = cm.DataTypeString
    cm.Send(STRING)
    ' - o -
    cm.DataReceiveType = cm.DataTypeByteArray
    cm.SendBytes(BYTEARRAY)
End Sub

' If you have selected  -   cm.DataReceiveType = cm.DataTypeString
Sub cm_DataReceived(sData As String)
   
End Sub


' If you have selected  -    cm.DataReceiveType = cm.DataTypeByteArray
Sub cm_DataReceivedBytes(buffer() As Byte)
   
End Sub


For server:

B4X:
Sub Process_Globals
    Dim cm as Comms
End Sub



Sub InitializeServer
    cm.Initialize
    cm.InitializeConnectToMe(Me, 51042, "cm", MainForm.RootPane)

    cm.DataReceiveType = cm.DataTypeString
    cm.Send(STRING)
   
    ' - o -

    cm.DataReceiveType = cm.DataTypeByteArray
    cm.SendBytes(BYTEARRAY)
End Sub



' If you have selected  -   cm.DataReceiveType = cm.DataTypeString
Sub cm_DataReceived(sData As String)

End Sub


' If you have selected  -    cm.DataReceiveType = cm.DataTypeByteArray
Sub cm_DataReceivedBytes(buffer() As Byte)
   
End Sub

Chiunque la vuole comprare puo mandarmi un messaggio private.
 

Star-Dust

Expert
Licensed User
Longtime User
Qual è il vantaggio di usare jserver, un socket o UDP, considerando che questi permettono più connessioni contemporaneamente?
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Qual è il vantaggio di usare jserver, un socket o UDP, considerando che questi permettono più connessioni contemporaneamente?
Il fatto che... permetta più connessioni contemporanemente :)

Cmq, rileggendo la domanda...
scenario:
  • rete locale di pc windows
  • su pc "A" è in esecuzione una applicazione/servizio B4J (dormiente) che è in attesa di ricevere un qualcosa, un segnale (dagli altri pc), per potersi svegliare e svolgere il suo compito
in pratica sul pc "A" gira questa applicazione B4J, e resta in attesa di ricevere una info, un bit, un drin-drin, da uno degli altri pc della stessa rete;
vorrei escludere soluzioni tramite socket;
  1. E' chiaro che l'applicazione sul PC A non possa "dormire", dovrà essere sempre in "ascolto". Quindi un server è l'ideale: sono i client che "svegliano" il server, ovvero lo "interrogano".
  2. Per me la cosa più semplice è un server websocket jServer - b4j. "Per me" non perché io pensi che sia la soluzione più semplice - anche se è semplice - ma perché sono abituato a smanettarci.
 

hatzisn

Well-Known Member
Licensed User
Longtime User
Qual è il vantaggio di usare jserver, un socket o UDP, considerando che questi permettono più connessioni contemporaneamente?
Credo che sia il server che il cliente possono iniziare una "conversazione". Questo in rispetto con JServer. Il suo avantaggio però centràle e che con la B4X lib è un implementazione "quadro nero" per tutti e tre AIS. Puoi inserire il riferimento alla libreria e tu sei pronto per "volare". Uso TCP per essere sicuro che i pacchetti arriveranno all' altra parte della "linea".
 

hatzisn

Well-Known Member
Licensed User
Longtime User
No, è sempre e solo il client che inizia la conversazione.
Sei coretto e sbagli allo stesso tempo. Il cliente sempre inizia la coversazzione ma che cosa è questa che chiamiamo conversazzione? Se ti dico Buongiorno alle 7:00:00 e tu rispondi Buongiorno alle 7:00:01 questa è una conersazzione. Se non ti diro qualcosa per rispondere al tuo risposto non ti dirai "Eh come Va?" alle 7:02:00? Complimenti, sei appena un server che ha iniziato una conversazione.
 
Top