c++ - Socket (TCP) utilisant Recv pour recevoir un problème de blocage de données?
扔个三星炸死你
扔个三星炸死你 2017-06-10 09:48:28
0
2
1290

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 ?

扔个三星炸死你
扔个三星炸死你

répondre à tous(2)
洪涛

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal