D'une manière générale : le socket (TCP) utilise recv pour recevoir des données. S'il n'y a aucune donnée dans le cache du noyau, il se bloquera.
Ensuite, si la connexion TCP n'est pas déconnectée, mais que l'autre partie n'envoie jamais de données, l'appel de la fonction recv bloquera-t-il le programme pour toujours ?
Socket est divisé en deux types : bloquant et non bloquant. Le mode de blocage par défaut peut être modifié en non bloquant via les paramètres ;
La signification du blocage : il s'agit en fait du tampon dans la pile de protocole TCP/IP
(. 1) En mode bloquant : quand S'il n'y a pas de données dans le tampon, alors attendez que les données soient renvoyées
(2) En mode non bloquant : S'il n'y a pas de données, un paramètre sera renvoyé immédiatement (par exemple, un une exception est levée sous Python)
Vous pouvez utiliser la fonction setsockopt() pour définir le délai d'attente