Vitesse / WinSock

RLBDC Messages postés 7 Date d'inscription dimanche 28 mars 2004 Statut Membre Dernière intervention 27 mars 2007 - 21 mai 2005 à 04:22
RLBDC Messages postés 7 Date d'inscription dimanche 28 mars 2004 Statut Membre Dernière intervention 27 mars 2007 - 22 mai 2005 à 18:47
YopYop tlm !

Bien, voilà , étant encore un peu "newbie" dans le C++ , je me suis lancé dans la programmation d'un jeu de pong basique en réseau .

Mon programme fonctionne comme sur des roulettes , sauf qu'il est d'une extrème lenteur .
Le fonctionnement est simple :
C'est le PC serveur qui effectue les calculs de trajectoire de la balle, puis envoie 3 données au PC client :
1) La position du curseur du PC serveur
2) & 3) Les valeurs X et Y de la position de la balle sur l'écran .

Le PC client quant à lui ne fait que lire ces valeurs, affiche la balle et le curseur du PC serveur, et envoie au PC serveur, la position de son curseur.

Comme vous pouvez-le constater, programme "tout simple" .
Le problème c'est qu'il est d'une lenteur apeurante !
Au fur et à mesure que j'ai effectué des tests , je me suis rendu compte que si le PC client coupait la connection, le programme du PC serveur reprenait alors une vitesse digne d'un Athlon XP 2200+

J'en ai donc déduis que les communications serveur / client étaient la cause directe de la lenteur .

Pour tester, j'ai enlevé tous les envoies de données du Serveur vers le Client .. et là le programme serveur plante , alors que je ne vois ABSOLUMENT pas pourquoi .

Conclusion : soit j'ai rien compris au fonctionnement des socket , soit le code de mon prog est à ch**r .

Voici ( en partie ) le code du Serveur : http://www.nomorepasting.com/paste.php?pasteID=40365
Et voici ( en partie ) le code du Client : http://www.nomorepasting.com/paste.php?pasteID=40366

Merci d'avance à qui saura partager ses connaissances

5 réponses

minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
21 mai 2005 à 11:32
J'ai jeté un oeil sur le code du serveur, et j'en deduit qu'il manque plein de lignes de codes.

Je vais quand même tenter de t'aider. Pour ton serveur, utilise les
threads (un pour les calculs, un autre pour l'affichage, et un autre
pour envoyer les données).

Ensuite, trouve une période suffisante pour envoyer tes données (genre
200ms). en attendant coupe le threads d'envoi (genre sleep()). Pour le
reste je ne vois pas comment d'aider plus pour le moment.

Le CyberMonde nous offre une meilleur qualité de vie
CyberMan.inc The WebSite
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
21 mai 2005 à 11:33
Aussi pour l'envoi des données, essay de le mettre en un seul send(),
tu mets dansune structure que tu envoi (se sera même plus propre au
niveau du code).

Le CyberMonde nous offre une meilleur qualité de vie
CyberMan.inc The WebSite
0
RLBDC Messages postés 7 Date d'inscription dimanche 28 mars 2004 Statut Membre Dernière intervention 27 mars 2007
21 mai 2005 à 12:18
Merci , tu m'as fais découvrir les threads !
Je ne connaissais pas, et après une petite google-recherche, j'ai vu ce que c'est .
En effet , ça peut améliorer la vitesse du jeu
Ceci dit , maintenant il me faut en comprendre le fonctionnement et l'utilisation

Je vais regarder tout ça , thx d'avoir pris un peu de temps pour moi
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
21 mai 2005 à 19:59
J'ai trouvé de bon tuto là dessus :

http://bob.developpez.com/tutapiwin/



Ca donne un bon début

Le CyberMonde nous offre une meilleur qualité de vie
CyberMan.inc The WebSite
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
RLBDC Messages postés 7 Date d'inscription dimanche 28 mars 2004 Statut Membre Dernière intervention 27 mars 2007
22 mai 2005 à 18:47
Merci bcp , je suis en train d'éplucher ce tutorial ...
Je pense qu'il devrait suffire Thx
0
Rejoignez-nous