Pb avec winsock

zeboss31 Messages postés 14 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 1 février 2010 - 27 déc. 2005 à 22:16
zeboss31 Messages postés 14 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 1 février 2010 - 28 déc. 2005 à 13:06
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

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
28 déc. 2005 à 03:32
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)
0
zeboss31 Messages postés 14 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 1 février 2010
28 déc. 2005 à 13:06
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...
0
Rejoignez-nous