Saltar al contenido

¿Cómo cerrar / restablecer completa y correctamente una conexión TcpClient?

Solución:

Tienes que cerrar la transmisión antes de cerrar la conexión:

tcpClient.GetStream().Close();
tcpClient.Close();

Cerrar el cliente no cierra la corriente.

Dado que la respuesta aceptada está desactualizada y no veo nada en las otras respuestas con respecto a esto, estoy creando una nueva. En .Net 2 y versiones anteriores, tenía que cerrar manualmente la transmisión antes de cerrar la conexión. Ese error se corrigió en todas las versiones posteriores de TcpClient en C # y como se indica en el documento del método Close, una llamada al método Close cierra tanto la conexión como la transmisión

EDITAR según Microsoft Docs

El método Close marca la instancia como eliminada y solicita que el Socket asociado cierre la conexión TCP. Según la propiedad LingerState, la conexión TCP puede permanecer abierta durante algún tiempo después de que se llama al método Close cuando quedan datos por enviar. No se proporciona ninguna notificación cuando la conexión subyacente ha terminado de cerrarse.

Llamar a este método eventualmente resultará en el cierre del Socket asociado y también cerrará el NetworkStream asociado que se usa para enviar y recibir datos si se creó uno.

Utilice la palabra: using. Un buen hábito de programación.

using (TcpClient tcpClient = new TcpClient())
{
     //operations
     tcpClient.Close();
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *