Spanish [SOLUCIONADO] astrem.write(esperar a estar conectado)

RAFA BRAVO

Active Member
Licensed User
Longtime User
Hola buenos dias, en mi app envío desde mi servidor a la app unos datos por B4xserializator (astrem.write), mi problema es que si no estoy conectado al servidor esos datos se pierden. Habría alguna forma de esperar a estar conectado para enviar los datos? he probado con los subs reanudables, (wait for, etc) pero aun no consigo hacerlo funcionar bien. gracias
 

josejad

Expert
Licensed User
Longtime User
Habría alguna forma de esperar a estar conectado para enviar los datos?
Con Wait For

Si ver tu código, poco más podremos ayudarte imagino. Nunca he usado B4XSerializator
 

RAFA BRAVO

Active Member
Licensed User
Longtime User
no estoy en el PC pero algo asi como:
B4J:
Private Sub ListenForConnections
   Do While working
     server.Listen
     Wait For Server_NewConnection (Successful As Boolean, NewSocket As Socket)
     If Successful Then
       CloseExistingConnection
       client = NewSocket
       astream.InitializePrefix(client.InputStream, False, client.OutputStream, "astream")
       conected = true
     End If
   Loop

y para enviar llamo a un sub mas o menos asi:

B4J:
Sub enviar
Dim mm As messaje
mm.initilize
mm.Dato1 = xxxx
mm.Dato2 = xxxx
if conected = true then
   astream.write(ser.ConvertObjectToBytes(mm))

entonces siempre que llamo a este sub y estoy conectado envio, pero si no estoy conectado quiero esteperar a estarlo y enviar
 

RAFA BRAVO

Active Member
Licensed User
Longtime User
Lo he podido hacer funcionar así:

B4J:
Sub sendFile
    Dim mm As Message
    mm.Initialize
    mm.WSconfirmaOK = WSx
    mm.BLconfirmaOK = BLx
    DateTime.DateFormat = "dd/MM/yyyy"
    mm.fechaBidon = DateTime.date(DateTime.Now)
    mm.horaBidon = DateTime.Time(DateTime.Now)
    mm.NumVIN = VINDato
    If connected = True Then
        astream.Write(ser.ConvertObjectToBytes(mm))
    Else
        Do While esperaCONECTAR
            If connected = True Then
                astream.Write(ser.ConvertObjectToBytes(mm))
                esperaCONECTAR = False
            End If
            
            Sleep(100)       
        Loop
            
    End If
End Sub

Una vez entro en este sub para enviar los datos. Primero pregunto si estoy conectado, si lo estoy, los envió. Y si no, entro en un do while hasta estar conectado, los envió y salgo. Funciona pero no se si habría otra forma mejor.
 
Top