Probleme deuxieme requete client serveur

Signaler
Messages postés
12
Date d'inscription
mardi 6 février 2001
Statut
Membre
Dernière intervention
20 avril 2007
-
Messages postés
5
Date d'inscription
jeudi 26 février 2004
Statut
Membre
Dernière intervention
27 novembre 2005
-
bonjour a tous
je developpe un programme client/serveur, la communication passe entre le client et le serveur, mon probleme est le suivant: quand le serveur envoie deux requete successive au client la deuxieme est perdue, car le client au moment de la reception de la deuxieme traite la premiere (je que je pense), et quand je met un sleep(2) entre l'envoie des deu requetes, le client arrive a les recevoir toute les deux.
est ce que qqu'un peut me donner un tuyau pour resoudre ce probleme?
merci a tous

7 réponses

Messages postés
415
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
2 décembre 2005
3
Tu peux utiliser les threads pour traiter chaques requêtes. Comme ça
ton programme continuera à recevoir des requètes et pendant ce temps il
traite la ou les précédentes.

Le CyberMonde nous offre une meilleur qualité de vie
CyberMan.inc The WebSite
Messages postés
12
Date d'inscription
mardi 6 février 2001
Statut
Membre
Dernière intervention
20 avril 2007

merci minet03 pour ta repoonse
j'ai pense a travailler avec les pthread pour traiter les requetes venants du serveur
(j'utilise les threads dans le serveur pour traiter les requetes clients, un thread pour chaque client), mais au niveau du client, tu ne trouves pas que un thread pour chaque requete sera de lourdes consequences sur les ressource client, je cherche une methode pas couteuse si elle existe.
Messages postés
415
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
2 décembre 2005
3
Pourquoi ne pas faire un thread par connection ? les IP t'aiderons pour reconnaitre le client.

Après tout dépend du type d'application que tu fais.

Le CyberMonde nous offre une meilleur qualité de vie
CyberMan.inc The WebSite
Messages postés
12
Date d'inscription
mardi 6 février 2001
Statut
Membre
Dernière intervention
20 avril 2007

je crois que je me suis mal exprime, mois je developpe un jeu multi-joueur en reseau, et pour faire des initialisations, le serveur doit envoyer une serie de requetes au client pour l'informer de la configuration du jeu, car des joueurs peuvent etres deja connectes, donc, le faite de faire 2 send successifs au client sans temporisation fait perdre le 2eme, donc moi je cherche une facon de faire ca sans faire un sleep entre les send du serveurs.
quand au serveur, il gere bien les demandes de connection et les equetes des client, car j'ai utilise les thread.
Messages postés
415
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
2 décembre 2005
3
Est ce que ta deuxième requête génère une erreur quelconque ? Si oui quelle est l'erreur (GetLastError()).

Ensuite, ton client peut géré les requêtes avec des threads : dès qu'il
recoit une requête il créé un threads pour l'analysé, et pendant ce
temps il écoute toujours les nouvelles requêtes arriver. Et ainsi de
suite.

Le CyberMonde nous offre une meilleur qualité de vie
CyberMan.inc The WebSite
Messages postés
5
Date d'inscription
jeudi 26 février 2004
Statut
Membre
Dernière intervention
27 novembre 2005

Salut, moi je te conseillerais de mettre un ou plusieurs caracteres
speciaux à la fin de chaque requête comme "\r\n" par exemple.

Ensuite au lieu de faire un simple appel à "recv" tu ajoutes une nouvelle fonction qui va bufferiser les appels à "recv".
Messages postés
5
Date d'inscription
jeudi 26 février 2004
Statut
Membre
Dernière intervention
27 novembre 2005

je vais rajouter 2-3 truc a mon poste de tout a l heure : les
caracteres speciaux font office de separateurs de requetes, la fonction
dont jai parlé utilise un buffer de lecture que tu remplis avec recv. A
chaque appel de la fonction tu regardes si il y a un message dans ton
buffer, si oui tu le vire du buffer et tu le retourne sinon tu fais un
appel à recv.