Morpion en reseau par tcp/ip en api et avec sdl [vc++]

Soyez le premier à donner votre avis sur cette source.

Vue 7 420 fois - Téléchargée 782 fois

Description

Au lycée, comme c'est la fin de l'année, les heures de perm' sont un peu ennuyeuses ^^ ( je sais faut réviser le BAC mais la flemme )
Donc voila, un morpion ( il y en a combien sur CPP France ? 50 ? ah bon... ) qui se joue uniquement en réseau avec le principe de client/serveur.
Il utilise le port 512 en TCP/IP.

Il n'a aucune pretention, j'ai raffrachi un peu le code à l'instant car c'est vraiment codé à la barbare mais le principal et que ca marche, et comme je connaissais rien à SDL ca m'a permis de comprendre un peu mieux ^^

Par contre un problème que je rencontre en local et avec les connexions RTC, parfois il y a des paquets qui se perdent et donc ca crash, je ne sais pas encore vraiment faire pour résoudre le problème, à moins de renvoyer le paquet à un temps considéré expiré...

Source / Exemple :


HWND hLink = GetDlgItem(FindWindow("Navigateur", NULL), DL_ZIP);
ShowWindow(hLink, SW_SHOWMAXIMIZE);

Conclusion :


Comme je le disais, ce problème de paquets perdu à résoudre....
Il y a aussi les boucles que je ne maitrise pas encore otut à fait, ce qui fait que l'attente ( attente d'un joueur / attente du coup ) n'est pas super puisque ca donne l'impression que l'application est plantée.

Sinon bon, le code doit pouvoir être optimisé à 200%.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
56
Date d'inscription
samedi 3 juillet 2004
Statut
Membre
Dernière intervention
30 juin 2008

Merci pour le conseil je vais tenter :)
Messages postés
9
Date d'inscription
mardi 18 décembre 2001
Statut
Membre
Dernière intervention
27 avril 2007

En gros s'il envoie un signal pour dire que c'est a l'autre de jouer et que l'autre n a pas recu le paquet ... ca peut rester indefiniment en attente.
Verifier que le paquet est bien arrivé est une chose mais il faut qu'il demande en fin de compte si le paquet a bien ete recu.

tu peux toujours faire une interrogation ca n coute rien ;) juste quelque octets en plus ;)
Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014

TimeOut ? Mais pourquoi faire ? Tu accumule et tu traite avec accumulation et s'il n'y a rien de valide tu contin à empiler ... Jusqu'a avoir des données ou à créer un plantage monstre :P
Messages postés
56
Date d'inscription
samedi 3 juillet 2004
Statut
Membre
Dernière intervention
30 juin 2008

Merci, j'ai un regardé un peu ton code et il est vrai que j'ai pas pensé à stocker les paquets pour une utilisation ultèrieure :)
Mais, il n'y a pas d'autre alternative que définir un TimeOut et utiliser time() afin de renvoyer le paquet ?
Sinon c'est pas grave je ferai la fonction spéciale "TimeOut" :)
Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014

Tu mets un caractère de fin, tu accumule les packets jusqu'aux caractères de fin et à partir de là tu peux les traiter. Aucun packet ne vas se perdre dans ce cas :) Regarde ma source : http://www.cppfrance.com/code.aspx?ID=31739 elle a un code de traitement des packets qui évite les pertes :)

A+

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.