Forum de la communauté SFML

Général => Discussions générales => Discussion démarrée par: janf le Janvier 21, 2016, 09:21:48 pm

Titre: Socket non bloquante pas de timeout
Posté par: janf 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;
 
Titre: Re : Socket non bloquante pas de timeout
Posté par: Laurent 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.