Hola.
Conecto mi aplicación Android por medio de un socket la cual funciona perfectamente en modo Debug pero al ejecutarla en modo Release no logra conectarse, al usar este ultimo modo el la aplicación de Windows se genera un Socket.Close mientras que en debug no ocurre, ya probé de todo pero no encuentro el problema.
Estoy usando la versión 6.0 del B4A
Agradezco cualquier ayuda. Gracias
Conecto mi aplicación Android por medio de un socket la cual funciona perfectamente en modo Debug pero al ejecutarla en modo Release no logra conectarse, al usar este ultimo modo el la aplicación de Windows se genera un Socket.Close mientras que en debug no ocurre, ya probé de todo pero no encuentro el problema.
Estoy usando la versión 6.0 del B4A
Agradezco cualquier ayuda. Gracias
B4X:
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
Private tr As TextReader
Private tw As TextWriter
Private Socket1 As Socket
Private AStreams As AsyncStreams
End Sub
Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
'Activity.LoadLayout("Layout1")
ConectarServidor
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
#Region SOCKET
'------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
' RUTINAS SOCKET
'------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sub ConectarServidor()
Try
'Si no esta inicializado el SOCKET lo inicializamos
If Socket1.IsInitialized=True Then Socket1.close
If Socket1.IsInitialized=False Then Socket1.Initialize("Socket1")
'??????????????????????????????????????????????
'Estas dos líneas de arriba si las pongo en un solo If Then Else como seria más lógico no funcionan
'??????????????????????????????????????????????
Socket1.Connect(IPServidor , 8573, 500)
Catch
Log("Error en ConectarServidor")
End Try
End Sub
'---------------------------------------------------------------------------------------------------
Sub Desconectar()
Try
If AStreams.IsInitialized Then AStreams.close
If Socket1.IsInitialized Then Socket1.close
If tr.IsInitialized Then tr.Close
If tw.IsInitialized Then tw.Close
Catch
Log("Error en Desconectar")
End Try
End Sub
'---------------------------------------------------------------------------------------------------
Sub EnviarDatos(Dato As String)
Try
If Socket1.Connected=True Then '
Estaba usando el Socket1.Connected para saber si estaba conectado al servidor pero esto solo me indica si se logro conectar no si el servidor esta listo.
If tw.IsInitialized=True Then
tw.WriteLine(Dato & "*")
tw.Flush
End If
Else
ConectarServidor
End If
Catch
Socket1.Close 'AQUI ESTABA EL ERROR
Log("Error al enviar datos a la PC")
ToastMessageShow("Error al enviar datos a la PC verifique que esten conectados",True)
End Try
End Sub
'---------------------------------------------------------------------------------------------------
Sub AStreams_NewData (Buffer() As Byte)
Dim Data As String
Dim Comando As String
Try
Data = BytesToString(Buffer, 0, Buffer.Length, "UTF8")
Do While Data.IndexOf("*")>0
Comando = Data.SubString2(0,Data.IndexOf("*"))
Data = Data.SubString(Data.IndexOf("*")+1)
EjecutarComandos(Comando)
Loop
Catch
Log("Error en AStreams_NewData " & Data)
End Try
End Sub
'---------------------------------------------------------------------------------------------------
Sub AStreams_Error
End Sub
'---------------------------------------------------------------------------------------------------
Sub AStream_Terminated
End Sub
'---------------------------------------------------------------------------------------------------
Sub Socket1_Connected (Successful As Boolean)
Try
If Successful = False Then
Return
End If
tr.Initialize(Socket1.InputStream)
tw.Initialize(Socket1.OutputStream)
tw.Flush
AStreams.Initialize(Socket1.InputStream, Socket1.OutputStream, "AStreams")
EnviarDatos("IDA") 'Al conectarnos respondemos al servidor dando nuestro ID
Catch
Log("Error en Socket_Connected")
End Try
End Sub
#End Region
'---------------------------------------------------------------------------------------------------
Sub EjecutarComandos(Texto As String)
Select Case Texto
Case "COMANDO1"
.......
Case "COMANDO2"
.......
End Select
End Sub
Last edited: