Pb avec winsock

Signaler
Messages postés
14
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
1 février 2010
-
Messages postés
14
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
1 février 2010
-
bonjour, je fais une programme utilisant Winsock et j'ai un problème : j'ai 2 appli : un "client" et un "serveur". Le but est d'avoir l'arborescence du disque dur du serveur dans le client comme ceci :

...
Set Folder = fso.GetFolder(path)
For Each X In Folder.SubFolders 'Dossiers
dossier = dossier & X.path & "\§"
i = i + 1
Next

For Each Y In Folder.Files 'Fichiers
dossier = dossier & Y.path & "§"
i = i + 1
Next
Winsock1.SendData i & "#DOSSIERS" 'Envoie la totalité dossiers + fichiers

Mon problème est que dans la variable dossier, le nombre de dossiers et fichiers est limité : en effet quand Winsock envoie cette variable, le client ne recoit pas toutes les données... Il n'y a aucun pb quand le dossier n'a pas beaucoup de sous-dossiers ou fichiers mais en revanche quand il y en a bocoup y'a un pb!!
J'ai pensé à envoyer la variable dossier en plusieurs parties mais je c pas cmt faire...
voila si vous avez une idée ( je c pas si c tré clair :(... )

2 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
Salut
... parce que l'évènement DataArrivals se déclenche plusieurs fois.
A chaque fois que le buffer est plein ou que la machine a du temps, cet évènement se déclenche.
Donc, il faut mémoriser les données et détecter la fin de transmission (avec un un \$ pourquoi pas).
Si tu ouvres n'importe quelle source qui parle de transmission par Winsock, il y aura cet technique.

Pour info, méfie toi : le caratère § est un caractère autorisé dans un chemin ou un nom de fichier, donc ta balise \§ peut être rencontrée ! Utilise plutôt des caractères impossible à trouver dans un nom de répertoire ou de fichier : * ? " < > | ou :

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
Messages postés
14
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
1 février 2010

merci pour ta reponse, je vais utiliser plutot | comme caractère... Aussi j'ai pas compris cmt il faut faire pour "mémoriser les données et détecter la fin de transmission". Détécter je voi cmt on fait (jpenser à faire Winsock1.SendData "FIN" ect) mais mémoriser je vois pas...