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

Auteur Sujet: sf::SocketSelector - receive() bloquant  (Lu 2245 fois)

0 Membres et 1 Invité sur ce sujet

Gugurumbe

  • Newbie
  • *
  • Messages: 2
    • Voir le profil
    • E-mail
sf::SocketSelector - receive() bloquant
« 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 ?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : sf::SocketSelector - receive() bloquant
« Réponse #1 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.
Laurent Gomila - SFML developer

Gugurumbe

  • Newbie
  • *
  • Messages: 2
    • Voir le profil
    • E-mail
Re : sf::SocketSelector - receive() bloquant
« Réponse #2 le: Décembre 21, 2013, 10:57:00 am »
Merci.