Forum de la communauté SFML

Aide => Réseau => Discussion démarrée par: actuenligne le Mai 22, 2012, 02:48:28 pm

Titre: [SFML2] Gérer le reception TCP en continu
Posté par: actuenligne 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 !
Titre: Re : [SFML2] Gérer le reception TCP en continu
Posté par: Laurent 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
Titre: Re : [SFML2] Gérer le reception TCP en continu
Posté par: actuenligne 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 ?)
Titre: Re : [SFML2] Gérer le reception TCP en continu
Posté par: Laurent 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.