Android Question aStream crashes

Alessandra Pellegri

Active Member
Licensed User
I developed this code to continuosly triying to connect to a server until the connection is OK. If it fails the loops continues.

B4X:
Sub Activity_Create(FirstTime As Boolean)
   'Do not forget to load the layout file created with the visual designer. For example:
   Activity.LoadLayout("1")
  
   If FirstTime Then
     connectiontimer.Initialize("connectiontimer",4000)
     connectiontimer.Enabled = True
     timeoutTimer.Initialize("timeoutTimer",2000)
     timeoutTimer.Enabled=False
   End If
   Log("aaaaa")
End Sub

Sub connectiontimer_tick
   If Socket1.IsInitialized Then
     If Socket1.Connected=False Then
       Socket1.Close
       Socket1.Initialize("Socket1")
       Socket1.Connect("192.168.1.11", 17178, 2000)
     Else
       send_data("STATUS")
       timeoutTimer.Enabled=True
     End If
   Else
     Socket1.Initialize("Socket1")
     Socket1.Connect("192.168.1.11", 17178, 2000)    
   End If
End Sub

Sub timeoutTimer_tick
   astream.Close
   Socket1.Close
End Sub

Sub astream_Error
End Sub

Sub astream_Terminated

End Sub

Sub Socket1_Connected (Successful As Boolean) 
   If Successful = False Then 
     ToastMessageShow("Error Connecting",False)
     Socket1.Close
     Return 
   End If
   ToastMessageShow("Connected",False)
   astream.InitializePrefix(Socket1.InputStream, False, Socket1.OutputStream, "astream")
  Dim buffer() As Byte
  buffer = "CIAOAAA".GetBytes("UTF8")    
   astream.Write(buffer)
End Sub

Sub astream_NewData (Buffer() As Byte)
  msg = BytesToString(Buffer, 0, Buffer.Length, "UTF8")
   timeoutTimer.Enabled=False
   If oldMsg<>msg Then
              .....   ......
   End If  
End Sub

Sub send_data(data As String)
  Dim buffer() As Byte
  buffer = data.GetBytes("UTF8")    
   astream.Write(buffer)
End Sub

In few words, the code every 4 seconds tries to connect to a server if it isn't connected. If it is connected it sends a query to the server and waits for 2 seconds a reply. If it doesn't come it closes astream and socket1 and restart trying to connect.

The first connection is ok. If after a succesful connection I stop the server, when I restart the server the code writes TWO times "Connected" and often it crashes.

It crashes in : astream.InitializePrefix(Socket1.InputStream, False, Socket1.OutputStream, "astream")

May be that someone knows why ?

Thank you.
 

Alessandra Pellegri

Active Member
Licensed User
It seems that sometime the Socket1_Connected event was generated by a non initialized Socket1. How is it possible ?

Anyway I worked around doing this :
B4X:
If Successful = False  Or Socket1.IsInitialized = False Then
ToastMessageShow("Error Connecting",False)
Socket1.CloseReturn
EndIf

Now it writes "Connected" just one time and it seems that it doesn't crash anymore.
 
Upvote 0
Top