Forum de la communauté SFML

Aide => Réseau => Discussion démarrée par: Gugurumbe le Décembre 20, 2013, 09:09:58 pm

Titre: sf::SocketSelector - receive() bloquant
Posté par: Gugurumbe le Décembre 20, 2013, 09:09:58 pm
Bonsoir,
Je souhaite utiliser un SocketSelector dans un serveur pour "surveiller" plusieurs sockets à la fois. Pour le tester, j'utilise telnet.
Après envoi d'un message via telnet, le sélecteur comprend bien qu'un message est arrivé, mais l'appel à receive() avec un paquet bloque, tandis que l'appel à receive() avec un (void*) fonctionne parfaitement. Dans le cas d'un sf::Packet, la fonction receive() retourne un code d'erreur dès que le client se déconnecte.
Je pense que le cas "receive(paquet)" bloque car les 4 octets attendus par la fonction receive() ne sont pas présents.
Dois-je abandonner l'utilisation des sf::Packet ? Peut-on spécifier au sélecteur de ne réagir que lorsqu'un paquet complet est prêt ?
Titre: Re : sf::SocketSelector - receive() bloquant
Posté par: Laurent le Décembre 20, 2013, 09:45:41 pm
Si tu n'as pas envoyé un sf::Packet, tu ne peux pas recevoir un sf::Packet. Il possède son propre protocole et ne peut pas être utilisé sur des données entrantes brutes.
Titre: Re : sf::SocketSelector - receive() bloquant
Posté par: Gugurumbe le Décembre 21, 2013, 10:57:00 am
Merci.