Probleme deuxieme requete client serveur

khanjri Messages postés 12 Date d'inscription mardi 6 février 2001 Statut Membre Dernière intervention 20 avril 2007 - 9 avril 2005 à 08:39
guerald Messages postés 5 Date d'inscription jeudi 26 février 2004 Statut Membre Dernière intervention 27 novembre 2005 - 27 nov. 2005 à 22:13
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

minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
9 avril 2005 à 13:01
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
0
khanjri Messages postés 12 Date d'inscription mardi 6 février 2001 Statut Membre Dernière intervention 20 avril 2007
9 avril 2005 à 22:43
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.
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
10 avril 2005 à 01:04
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
0
khanjri Messages postés 12 Date d'inscription mardi 6 février 2001 Statut Membre Dernière intervention 20 avril 2007
10 avril 2005 à 05:46
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
10 avril 2005 à 10:01
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
0
guerald Messages postés 5 Date d'inscription jeudi 26 février 2004 Statut Membre Dernière intervention 27 novembre 2005
27 nov. 2005 à 22:10
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".
0
guerald Messages postés 5 Date d'inscription jeudi 26 février 2004 Statut Membre Dernière intervention 27 novembre 2005
27 nov. 2005 à 22:13
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.
0
Rejoignez-nous