Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Socket non bloquante pas de timeout  (Lu 2734 fois)

0 Membres et 1 Invité sur ce sujet

janf

  • Newbie
  • *
  • Messages: 45
    • Voir le profil
Socket non bloquante pas de timeout
« le: Janvier 21, 2016, 09:21:48 pm »
Salut

En regardant le code de la fonction connect() de la classe TcpSocket, j'ai cru comprendre que si la socket est au départ en mode non-bloquant, passer un timeout à la fonction n'a aucun effet.

J'imagine que c'est tout à fait voulu mais perso j'aurais trouvé plutôt logique que si on précise un timeout, on s'attend à ce que la socket aille jusqu'au bout de ce timeout pour tenter de se connecter, même si elle est non-bloquante. M'enfin je vois bien aussi la logique inverse, on peut écrire des fonctions avec timeout et vouloir les outrepasser en mettant la socket en non-bloquante. Au final en fait je trouve que ça gagnerait en clarté de bien préciser ce comportement dans la doc. Mea culpa si ça l'est et que je suis passé à côté.

TcpSocket.cpp, l.160
// If we were in non-blocking mode, return immediately
        if (!blocking)
            return status;
 

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Socket non bloquante pas de timeout
« Réponse #1 le: Janvier 22, 2016, 07:54:50 am »
Citer
perso j'aurais trouvé plutôt logique que si on précise un timeout, on s'attend à ce que la socket aille jusqu'au bout de ce timeout pour tenter de se connecter
Attendre signifie bloquer. Bizarre pour une socket non-bloquante ;)

De manière générale, aucune opération sur une socket non-bloquante ne va bloquer ou attendre quoique ce soit. Inutile de le préciser dans la doc de chaque fonction.
Laurent Gomila - SFML developer