Accueil > Forum > > > > Perte de messages
Perte de messages
vendredi 11 septembre 2009 à 19:32:01 |
Perte de messages

mohdaef
|
Bonjour à tous
Je suis entrain de programmer un petit multijoueur, et pour cela je doit échanger des messages entre les différents programmes.
Pour cela j'ai un pile qui accumule l'ensemble des messages à envoyer, ensuite j'un thread qui contien un boucle infinie qui prélève les messages dans la pile et les envois par le biais de la méthode send().
De l'autre côté c'est l'inverse j'ai un thread avec une boucle infinie qui récupére les messages par la méthode recv(), et qui les empiles dans la pile pour qu'il puissent être traités ultérieurement.
La première pile fonctionne correctement les message s'enregistre bien dans l'ordre et à la suite, le thread prélève et envoie les message sans erreurs (la méthode send() ne renvoie pas d'erreurs).
Le problème est que de l'autre côté la méthode recv ne récupère pas l'intégralité des messages.
J'ai utilisé la méthode Sleep() pour ralentir la fréquence d'envoie des messages et là tous les messages passent correctement.
A priorie je ne devrais pas avoir à utiliser d'appel à la méthode Sleep(). Pouvez-vous m'en dire plus sur ce comportement étrange ?
Un grand merci d'avance ça fait pas mal de temps que je suis dessus.
|
|
mardi 15 décembre 2009 à 23:46:57 |
Re : Perte de messages

Scooper
|
Salut,
Je pense que tous tes messages arrivent de l'autre coté mais pas dans la forme ou tu le souhaites.
Je m'explique :
du coté serveur tu as une boucle qui envoie tes messages à la suite sous un format que tu as défini, (0xFF début et 0xAA fin du message) par exemple :
1er send
0xFF message1 0xAA
2ème send
0xFF message2 0xAA
...
et de l'autre coté, tu risque de recevoir plusieurs messages en seul flot de données :
1 seul receive :
0xFF message1 0xAA0xFF message2 0xAA0xFF message3 0xAA
regarde le contenu de ton buffer de réception ou avec Wireshark.
La solution est de faire une boucle qui parcourt les données que tu as reçu afin de toutes les traiter.
Sinon tu peux essayer l'option TCP_NODELAY qui permet de désactiver l'algorithme de Nagle mais tu utilisera plus de bande passante.
|
|
Cette discussion est classée dans : messages, perte, thread, méthode, pile
Répondre à ce message
Sujets en rapport avec ce message
Passage d'une structure à un thread [ par valoue ]
Bonjour,Voilà, j'aurais une petite question.Je travaille sous VC++(.net) et je créé un thread depuis une procédure.J'ai donc une méthode/* Emission d'
message de la pile [ par cyber_al ]
bonjoursj'ai une petitte question a poser concernant les messages de la pile ,explications:mon application principale me permet de lancer une dll avec
PostThreadMessage / GetMessage : perte de messages [ par swonder ]
Bonjour,J'ai un problème de perte de messages dans la communication inter-thread, que je suppose dû au fait que GetMessage n'a pas de file d'attente d
Cross-thread operation [ par hrp ]
Bonjour,j'aimerai créer une class possédant des événements. Cette class lance également un thread qui va déclancher l'événement. Dans le code où est i
Attacher Callback à un Thread [ par melkiorlenecrarque ]
Bonjour à tous ! Le titre est assez parlant je trouve ;)Je devellope une application client/serveur et je voudrais que les messages WM_SOCKET soient g
perte de paquets UDP dans un thread quand l'autre thread fait un write() [ par fabricius ]
Hello,Voila mon problème, ca fait bien une semaine que je suis dessus...J'ai écrit un soft qui écoute une socket UDP, qui reçoit des paquets et qui le
Win32 - parcourir la pile utilisateur d'un thread [ par BlackGoddess ]
Bonjour, je voudrais parcourir la pile utilisateur d'un thread. J'ai essayé en utilisant GetThreadContext, en sauvegardant Esp a la création du threa
Client - serveur C++ avec thread [ par nono_in_maribor ]
Bonjour!!Voila, je previens tout de suite je ne suis pas un pro du c++. Mon probleme est le suivant : j'ai fait un client-serveur en c++ (sous devc++)
LAN Socket et multi thread [ par RV2931 ]
Bonjour, Je suis en train d'essayer de faire un chat en réseau, chaque machine est client/serveur sur un port. Mais on m'a conseillé de faire un threa
[API Win32 sans MFC] Lecture port série: thread bloqué [ par nitrique ]
Bonjour à tous, Je lis des données dès qu'elle arrivent sur le port COM avec la fonction WaitCommEvent. Pour éviter de figer l'application, j'util
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|