Android Question Release of buffer Astreams_Newdata

koffie

Member
Licensed User
Longtime User
After 2 days of fiddling, I finally gave up....

Building a kind of challenge response system with Asyncstreams.

The Server/Host part is a simple Python script on my Linux PC. The connection is OK.

The android asks the server for a 'challenge'. I do see that the server sends one.
that part is working...DUHH

I can not though, use the newdata buffer data in my response..because the buffer is empty. The host did send a challenge...but the buffer is empty.
The second time I ask for a challenge, the newdata buffer gives me the data from the previous challenge
The third time...the buffer gives me the data from the second challenge...and so on.

It looks like the buffer is only filled (or usable) after the whole sub has finished.

I tried to split the challenge and response in two service modules hoping that the newdata would be filled, with the current challenge, but no.
I build in a timer to wait, and than read the buffer...but still only the data from the previous challenge.

What should i do to, kind of, release the buffer and use the newdata of the current challenge?

Thanks
 

koffie

Member
Licensed User
Longtime User
I think this is the relevant code.....

Like I said. I can transmit and do receive...but I can cannot 'process' the relevant Rx_challenge because it's not the present Rx_challenge but a (prior) buffered one...

Thanks.


B4X:
Sub send2
If AStreams.IsInitialized = False Then Return
     ' both rx_challenge and tx_challenge are declared in Globals
   Log("challenge in buffer BEFORE 'asking for CHALLENGE' is send"&rx_challenge)
   tx_challenge="<c>ask for challenge</c>"
    Dim buffer1() As Byte
     buffer1=tx_challenge.GetBytes("UTF8")
     AStreams.Write(buffer1)
     Log("challenge send: "&tx_challenge)   
     ' this is the main code. I Did try
     ' to split this in 2 service modules
     ' and with a timer between "challenge send"
     ' and "received challenge"
   Log("received challenge in buffer "&rx_challenge)
   ' here I just echo the received rx_challenge
   ' In the productionversion rx_challenge is recalculated
   ' based on the original rx_challenge
   msg="<c>response: "&rx_challenge&"</c>"
     buffer1 =msg.GetBytes("UTF8")
   AStreams.Write(buffer1)
     Log("response send by B4A: "&msg)
   Log ("nothing received")   
End Sub

Sub AStreams_NewData (buffer() As Byte)
   
  rx_challenge = BytesToString(buffer, 0, buffer.Length, "UTF8")
  Log(" received challenge in Newdata: "&rx_challenge)
End Sub
 
Upvote 0
Cookies are required to use this site. You must accept them to continue using the site. Learn more…