2010-03-02 7 views
1

Pardon si cette question a été répondue mais je n'ai pas pu la trouver. Je suis un peu confus au sujet de recv() et recvfrom(). Une fois que le serveur lie l'adresse (ou accepte la connexion pour TCP), recv() est appelée. Est-ce que recv() vérifie constamment les messages qui ont été envoyés ou attend-il qu'un message soit reçu? Si cela n'attend pas, combien de temps dure le temps d'attente?Confus au sujet de recv()

Je ne sais pas si j'ai du sens, mais si quelqu'un pouvait m'éclairer, je serais reconnaissant.

Répondre

5

Si aucun message sont disponibles à la prise et O_NONBLOCK n'est pas défini sur le descripteur de fichier de la prise, recv() bloquera jusqu'à ce qu'un message arrive.

Si aucun message sont disponibles à la prise et O_NONBLOCK est défini sur le descripteur de fichier de la prise, recv() doit échouer et errno [EAGAIN] ou [EWOULDBLOCK].

Source: http://www.opengroup.org/onlinepubs/009695399/functions/recv.html

+0

merci, je pensais que j'ai lu cela à fond mais apparemment pas assez .. –

0

Notez que vous pouvez mettre en œuvre un délai d'attente en utilisant select() ou poll(), qui vous permet également d'attendre sur plusieurs prises à la fois.

Questions connexes