Winsock & Optimisation

Résolu
calimero63110 Messages postés 33 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 14 décembre 2008 - 24 oct. 2008 à 20:33
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 - 24 oct. 2008 à 22:33
Bonjour à tous les codeurs,


Je me suis lancé dans la programmation d'un MMORPG, et j'attaque dés ce week-End la partie serveur. Je souhaite obtenir une capacité d'accueil sur le serveur la plus grande possible, et donc, chaque petite optimisation compte.
Ayant observé Mirage & Elysium Diamond ( Client / Serveur de MMORPG OpenSource), j'ai constaté que ces deux engines crée autant de controles winsock que de joueurs succeptibles d'être accueillis.
J'envisage actuellement de créer un socket à chaque fois qu'un joueur arrive, puis le supprimer lors de sa déconnexion.

Je précise que je n'ai quasiment aucune connaissance dans Winsock ni dans les réseaux ( juste les bases concernant les packet, leur envoi, l'initialisation d'un protocole winsock, Routeur et ports )...

Mes questions :

Est-il obligatoire de créer un socket / joueur ?
Comment se calcule le nombre maximum d'envoi de packet possible par seconde ? ( A partir des données du FAI )
Quels sont les differentes techniques d'optimisation pour winsock ( Packet compressés ? Envoi groupé ? )
Est-il judicieux de coder celà dans un autre langage que VB6 ( le serveur ne faisant que du calcul, lecture de fichiers et du socket ? ) concernant la capacité d'acueil du serveur ?
Avez vous quelques conseils et astuces à me signaler avant de me lancer dans ma tâche ?

Je vous remercie d'avance quand à l'attention que vous porterez à mon message,
Bonne soirée :)

2 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 oct. 2008 à 21:42
salut,

Est-il obligatoire de créer un socket / joueur ? -> oui, sinon pas de multi-connexion ^^

Comment se calcule le nombre maximum d'envoi de packet possible par seconde ? ( A partir des données du FAI )-> directement tu ne peux pas...., tu dois tricher en téléchargeant un fichier en http, un en ftp, idem en upload, afin de mesurer les perf qui vont aussi dépendre du serveur des fichiers en questions. mais de toute façon l'intérêt de ces informations me semble très limité, pour ton serveur...

Quels sont les differentes techniques d'optimisation pour winsock ( Packet compressés ? Envoi groupé ? )-> la compression (ZLIB) est une bonne manière d'économiser la bande passante, mais il faut alors bien tenir compte du fait que le serveur devait décompresser chaque message.... 50 connectés, 2 messages par seconde, faut déjà une bonne machine. pas d'exemple concrêt en ce point, faut tester....

Est-il judicieux de coder celà dans un autre langage que VB6 ( le
serveur ne faisant que du calcul, lecture de fichiers et du socket ? )
concernant la capacité d'acueil du serveur ?-> si c'est bien codé, pas de raison non, VB6 sait faire du bon travail ^^

Avez vous quelques conseils et astuces à me signaler avant de me lancer dans ma tâche ?-> si le fonctionnement du winsock multi-connexions n'est pas clair, tu peux jeter un oeil dans mes sources : URBISOCK. d'ailleurs utilisable tel quel pour ton projet ;)

bon courage
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp <
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
24 oct. 2008 à 22:33
Est-il obligatoire de créer un socket / joueur ? Oui, un socket minimum par connexion et donc par joueur

Comment se calcule le nombre maximum d'envoi de packet possible par seconde ?( A partir des données du FAI )
Les données que te fourni ton fai sont des données théoriques calculés à partir des caractéristiques de ta ligne, ou pas.
Ce sont généralement les limites maximales que ta ligne en théorie peut atteindre mais généralement surestimées.
Dans la pratique tu sera souvent en dessous, d'autant plus que le débit d'une ligne est très variable dans le temps et dépend de beaucoup de paramètres, comme les routeurs traversés, l'occupation des sites et réseaux interrogés, l'heure de navigation, dégroupage ou non de ta ligne, de la ligne cible si tu te connecte chez un particulier, ...

Le routage des paquets est certes optimisé, mais dans la théorie, le paquet que tu envoie à ton voisin de palier peut très bien faire le tour du monde pour atteindre l'ordinateur de ton voisin à 20m du tiens.

Pour le reste je passe mon tour

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
0
Rejoignez-nous