Envoi de fichier Winsock

Signaler
Messages postés
1
Date d'inscription
dimanche 27 avril 2008
Statut
Membre
Dernière intervention
23 mai 2008
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonjour à tous, je commence à utiliser le controle winsock, je cherche à créer un serveur qui, lorsqu'il reçoit le chemin d'un fichier, renvoi ce fichier au client. J'ai déjà fais une recherche ou deux sur Vbfrance, mais j'ai eu beaucoup de difficulté à extraire le principe de la chose, d'ou m'a question.

Mon client envoit une information au format "003c:\fichier.txt" par exemple.

Mon serveur scinde l'information en deux partie grâce à un Mid()
- "003" (Qui lui indique dans un select case qu'il s'agit d'une demande de téléchargement)
-"c:\fichier.text" (Qui est le chemin du fichier demandé)

Le serveur vérifie l'existance du fichier grâce à un Dir()
si le fichier existe, je lance la procédure suivante

Open CheminDuFichier for binary as #1

for x=1 to (lenfile(CheminDuFichier)/600)
Get #1, , Buffer
winsock.senddata "003" & Buffer
Buffer = ""
Next x

Suis-je sur la bonne voie ? Qu'elle est mon erreur ?
Merci d'avance

1 réponse

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Salut
Ta méthode de lecture du fichier n'est pas correcte.
Si tu utilises le mode Binay (ce qui nécessaire ici), c'est la taille de la variable Buffer qui va déterminer la quantité de données que tu vas lire à chaque cycle.
Il faut donc dimensionné Buffer avant de faire le Get :
   Buffer = String(Chr$(0), 600)
Ce dimensionnement est à réinitialiser à chaque cycle (pas obligatoire, mais bon)
Il faudra voir ce que donne la lecture de la fin du fichier si la diision par 600 ne tombe pas juste --> A gérer
Plus besoin de For-Next puisque la taille ne dépend pas du x
   Do While Not(EOF(1))
      ' Lecture
      ' Envoi
      DoEvents
   Loop

Je t'encourage à lire quelques sources qui font la même chose pour comprendre ce qui se passe, car à la réception, tu vas avoir des problèmes pour dissocier deux fichiers qui se suivent ...

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

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)