Saludos nuevamente. Bueno no hubo respuestas a esta consulta pero en fin, logré encontrar una solución y quiero compartirla con los amigos de este foro =) .
Para saber si una app cliente fue cerrada o finalizada de cualquier modo. Coloqué un timer (objeto) en su evento "Ticks" con un tiempo de repetición de 3000 milisegundos (3 segundos).
Código:
'Se acepta solo 11 conexiones
Dim Connections(10) As Socket
Private Sub tmrVerificarCon_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmrVerificarCon.Tick
for i As integer = 0 to Connections.Length -1 Step 1
If Not Connections(0) Is Nothing Then
If Not Connections(0).Poll(1500, SelectMode.SelectRead) Then
Return
End If
Dim hostinformation As IPEndPoint = Connections(0).RemoteEndPoint
Dim MensajeRecibido As String = "La IP : " + hostinformation.Address.ToString + " ha finalizado conexión"
Connections(0).Close()
Connections(0) = Nothing
If txtChat.Text = "" Then
txtChat.Text = MensajeRecibido
Else
txtChat.Text = txtChat.Text + vbCrLf + MensajeRecibido
End If
End If
next
End Sub
Esta es una parte de mi código de prueba "Un simple chat" del lado del servidor y como observan usé el método "poll" que me devuelve true cuando el app cliente se ha cerrado, no necesariamente llamando al método "close". Espero ayudar con este grano de arena al foro. Hasta la próxima =)