Comment déterminer la fermeture d'une connexion TCP à l'aide du package Net
Problème :
Lors de la mise en œuvre un serveur TCP, il est essentiel de savoir quand les clients ferment leurs connexions. Comment pouvez-vous déterminer cela à l'aide du package net ?
Réponse :
Pour détecter une connexion TCP fermée, vous pouvez utiliser la méthode suivante :
one := make([]byte, 1) c.SetReadDeadline(time.Now()) if _, err := c.Read(one); err == io.EOF { // Connection closed } else { // Connection still open }
Cette approche implique :
Détection du délai d'attente :
Pour détecter un délai d'attente, vous pouvez vérifier si l'erreur est un réseau. Erreur avec un délai d'attente.
if neterr, ok := err.(net.Error); ok && neterr.Timeout() { // Timeout occurred }
Mise à jour (Go 1.7 ):
Dans Go 1.7, les lectures de zéro octet reviennent immédiatement et n'entraînent jamais d'erreur. Pour en tenir compte, il faut lire au moins un octet.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!