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

Auteur Sujet: [SFML2] Gérer le reception TCP en continu  (Lu 2326 fois)

0 Membres et 1 Invité sur ce sujet

actuenligne

  • Full Member
  • ***
  • Messages: 129
    • Voir le profil
[SFML2] Gérer le reception TCP en continu
« le: Mai 22, 2012, 02:48:28 pm »
Bonjour  :)

J'ai commencé ma première maquette d'application en réseau.
Il y a deux clients et un serveur qui ne fait que relayer ce que les clients envoient,
le tout en TCP.

Pour l'instant l'émission marche bien : le client envoie dès qu'il reçoit une input.
En revanche j'ai plus de mal avec la réception, car je ne sais pas comment faire
pour que le client soit toujours à l'écoute du serveur sans ralentir l'application.

Faut-il laisser en boucle un socket.receive(), pour être à l'écoute du serveur ?
Le problème est que même en mettant la socket non bloquante,
l'application a de terribles lags quand je fais ça (je n'utilise pas de threads).

Et est ce qu'on peut envisager d'avoir deux sockets par client : une qui ne fait que recevoir
et l'autre qui s'occupe d'émettre ?
Ou alors faut-il nécessairement utiliser des Selector dans ce cas ?

Merci d'avance pour votre aide !

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML2] Gérer le reception TCP en continu
« Réponse #1 le: Mai 22, 2012, 02:50:30 pm »
Citer
Le problème est que même en mettant la socket non bloquante,
l'application a de terribles lags quand je fais ça (je n'utilise pas de threads).
Ca c'est pas normal. Tu es sûr que tu ne fais rien de bizarre ?

Sinon c'est pas compliqué :
- soit tu gardes toutes tes sockets dans le thread principal en mode non-bloquant (ok uniquement si tu as déjà une boucle de rafraîchissement qui tourne régulièrement)
- soit tu utilises un unique thread + un sélecteur pour toutes tes sockets
- soit tu utilises un thread par socket
Laurent Gomila - SFML developer

actuenligne

  • Full Member
  • ***
  • Messages: 129
    • Voir le profil
Re : [SFML2] Gérer le reception TCP en continu
« Réponse #2 le: Mai 22, 2012, 06:20:14 pm »
Merci Laurent !

Oui, c'est bien ce que je me disais, ce n'est pas normal donc...
J'ai du faire une erreur ailleurs dans le code.

Et est ce qu'on peut se permettre d'appeler à chaque frame la fonction .receive() du socket en
mode non-bloquant ?
(en gros est ce que ça risque d'affecter le processeur ou la bande passante ?)
« Modifié: Mai 22, 2012, 06:30:35 pm par actuenligne »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML2] Gérer le reception TCP en continu
« Réponse #3 le: Mai 22, 2012, 11:42:37 pm »
Citer
Et est ce qu'on peut se permettre d'appeler à chaque frame la fonction .receive() du socket en
mode non-bloquant ?
Oui, aucun problème.
Laurent Gomila - SFML developer