Winsock problème

tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 - 31 mars 2005 à 14:54
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 - 7 avril 2005 à 10:28
Bonjour à tous,

J'essaye de faire un serveur qui récupère l'arborescence d'un disque client.

Mais lorsque je fais un SendData dans une boucle les messages se confondent.

Biensur, j'ai essayé de mettre des DoEvents dans tous les sens.

Mais cette méthode n'est pas fiable!



Ca marche sur la mm machine mais pas avec une machine distante.



Bref, quelqu'un aurait-il une meilleure idée?

Ou encore mieux un exemple utilisant une meilleure idée

Merci d'avance

TBBUIM

5 réponses

minimarch Messages postés 31 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 12 février 2006
31 mars 2005 à 18:09
Une solution peut etre un peu lourde, mais qui devrait marcher (si j'ai bien compris ton pb):



a chaque fois que tu fais un SendData, tu attends que le serveur te
renvoie une confirmation de reception. Juste un OK, ou avec un
identifiant devrait suffire.



Mais ca risque de ralentir les transmissions des donnes, d'abord parce
qu'il y aura plus d'informations, et ensuite parce que tu vas attendre
la reponse a chaque fois.


MiniMarch'
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
31 mars 2005 à 20:41
Evidemment, c'est ce que j'avais fait en premier.
Mais faire un appel récursif en passant son temps entre le serveur et le client,
non seuleument c'est trop lent
comme en plus, c'est un casse-tête!
J'ai essayé aussi le coup du timer à 1 et mettre le message dans la pile
Mais c'est pas fiable non plus, il doit bien y avoir un moyen!
TBBUIM
0
minimarch Messages postés 31 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 12 février 2006
1 avril 2005 à 11:20
voici comment je vois les choses (tu me pardonnera je n'ai plus les fonctions en tete, je le fait en pseudo code):



client:



envoi info par winsock

tant que pas recu reponse de serveur

doevents (je m'en rappelle de celle la)

fin tant que



tu recommences a envoyer les info par le client



serveur:



ecoute du port

quand message recu, envoi de confirmation par winsock

ecoute du port...





Bien sur l'envoi des infos sera long, mais ce n'est pas casse tete a coder.


MiniMarch'
0
minimarch Messages postés 31 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 12 février 2006
1 avril 2005 à 11:23
Une autre methode:

tu recuperes toutes les infos. Tu les envoies a la fin ou au fur et a mesure.



-le serveur stocke le tout en memoire dans un tableau (ou autre)

-le client envoie un message signifiant que l'envoi des messages est termine

-le serveur classe le tout dans l'ordre (si tu envois les chemins
complets ou un ID au debut de chaque message, il suffit de faire un
classement alphabetique des infos)



tu resous le probleme. tu t'en tires avec un stockage et un tri dans un tableau...

MiniMarch'
0

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

Posez votre question
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
7 avril 2005 à 10:28
J'ai trouvé la solution, je vais utiliser RPC lol

Winsock ça suce trop grave! Winsuck

Plus l'ordi à contacté est loin, plus le winsock retarde dans ces envois.

TBBUIM
0
Rejoignez-nous