Maison  >  Questions et réponses  >  le corps du texte

c++ - Socket (TCP) utilisant Recv pour recevoir un problème de blocage de données?

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 ?

扔个三星炸死你扔个三星炸死你2710 Il y a quelques jours1279

répondre à tous(2)je répondrai

  • PHP中文网

    PHP中文网2017-06-10 09:50:28

    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)

    répondre
    0
  • 大家讲道理

    大家讲道理2017-06-10 09:50:28

    Vous pouvez utiliser la fonction setsockopt() pour définir le délai d'attente

    répondre
    0
  • Annulerrépondre