método de notificación de desconexión de socket
Acabo de buscar una solución posible para indetificar cuando el cliente se desconecta. encontré esto:
public bool IsConnected( Socket s)
{
try
{
return !(s.Poll(1, SelectMode.SelectRead) &&s.Available == 0);
}
catch (SocketException) { return false; }
}
estoy usando un ciclo while en mi main con thread.sleep (500) y ejecuto el método Isconnected, funciona bien cuando lo ejecuto a través del estudio visual y cuando hago clic en detener la depuración, en realidad me notifica en el programa del lado del servidor, pero cuando solo voy al exe en el directorio bin y ejecútelo; de hecho, notifíqueme una conexión, pero cuando cierre el programa (manualmente desde el botón 'x') o mediante el administrador de tareas, elIsConnected
Aparentemente, el método devuelve cierto ... estoy usando una conexión TCP simple
client = new TcpClient();
client.Connect("10.0.0.2", 10);
servidor:
Socket s = tcpClient.Client;
while(true)
{
if (!IsConnected(s))
MessageBox.Show("disconnected");
}
(Se ejecuta en un hilo por cierto).
alguna sugerencia chicos? Incluso intenté cerrar la conexión cuando el cliente cierra:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
client.Close();
s.Close();
Environment.Exit(0);
}
No se que hacer