| |||
| Saludos a todos otra vez. Estuve probando varios métodos y propiedades de una variable tipo Socket que pertenece a la importación de objetos System.net.socket de vb.net. Encontré una propiedad que me indica si se ha conectado con un host remoto desde una última operación, me refiero a la propiedad ".connected", esta propiedad me devuelve "true" al momento que mi app server acepta la conexión de mi app cliente en otra pc. Pero al momento que cierro mi app cliente esta propiedad me sigue devolviendo true. ¿Hay alguna manera de hacer que mi app servidor sepa que la app cliente fue cerrada?. Una de mis ideas es que al momento de cerrar mi app cliente mandarle un string que le diga a mi app server que se cerrará de este modo le hago un close desde el servidor. Pero yo pienso que debe haber una solución más objetiva relacionada a esta función. Por ello, pido una idea alternativa. De antemano muchas gracias nuevamente. |
| |||
| 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 =) |