Vitesse / WinSock

Signaler
Messages postés
7
Date d'inscription
dimanche 28 mars 2004
Statut
Membre
Dernière intervention
27 mars 2007
-
Messages postés
7
Date d'inscription
dimanche 28 mars 2004
Statut
Membre
Dernière intervention
27 mars 2007
-
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

Messages postés
415
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
2 décembre 2005
3
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
Messages postés
415
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
2 décembre 2005
3
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
Messages postés
7
Date d'inscription
dimanche 28 mars 2004
Statut
Membre
Dernière intervention
27 mars 2007

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
Messages postés
415
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
2 décembre 2005
3
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
Messages postés
7
Date d'inscription
dimanche 28 mars 2004
Statut
Membre
Dernière intervention
27 mars 2007

Merci bcp , je suis en train d'éplucher ce tutorial ...
Je pense qu'il devrait suffire Thx