IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

ftp via winsock


Sujet :

VB 6 et antérieur

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 14
    Par défaut ftp via winsock
    Bonjour J'ai suivi quelque tutos sur le net pour faire du ftp via winsock et mon code se bloque sur cette partie :

    a savoir que le bloc de code suivant se trouve dans FTP_dataArrival , que il y'a 2 winsocks FTP et FTPUP ( je ne sais pas a quoi ça sert mais c'était dans un des tutos ) et que la variable coderecu est la valeur que renvoi le ftp

    Je ne mets pas le debut de l'évennement car il contient mot de passe et cie et de tout façon tous ce qui est au dessus fonctionne ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    If coderecu = 227 Then
    Label3.Caption = "connecté au ftp"
    '''''''''''''''''''''''''''''''''''
    '   Calcul du port de reception   '
    '''''''''''''''''''''''''''''''''''
    Dim Temp As Variant, FtpDataRemotePort As Variant
    Temp = Split(txtrecu, ")")
                Temp = Split(Temp(0), "(")
                Temp = Split(Temp(1), ",")
                FtpDataRemotePort = CLng(Temp(4)) * 256 + CLng(Temp(5))
    ''''''''''''''''''''''''''''''
    '       Fin du calcul        '
    ''''''''''''''''''''''''''''''
     
    'on met le fichier dans une variable
    Dim Buffer As Variant
    Open "C:\heps.txt" For Binary Access Read Lock Read Write As #1
        Buffer = Input(LOF(1), #1)
        Close #1
     
    FTPUP.Connect "Knight-Server.Ath.Cx", FtpDataRemotePort
     
     Label3.Caption = FtpDataRemotePort
     
    FTP.SendData "STOR" & "fichier.exe"
     
     
    If coderecu = 150 Then 'le serveur accepte la connection
    FTPUP.SendData Buffer & vbCrLf
    'Voila, le serveur recoit le fichier
     
      Label3.Caption = "Torrent Envoyé"
    End If

  2. #2
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut Fautes de frappe
    Il est difficile de deviner où ton code se bloque, mais je peux te donner des précisions sur FTP

    En FTP on utilise deux connections, la premiere sur le PORT 21 sert à l'échange des messages de protocole, la deuxieme sert au transfert des Données , et pour cela , le port est géré soit par toi, soit par le serveur.
    Apparement dans ton code, c'est le serveur qui a pris l'initiave de la détermination du port (Tu as du lui envoyer au préalable une commande PASV et le serveur te reponds par le n° du Port qu'il a choisi)
    Tes lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Temp = Split(txtrecu, ")")
                Temp = Split(Temp(0), "(")
                Temp = Split(Temp(1), ",")
              FtpDataRemotePort = CLng(Temp(4)) * 256 + CLng(Temp(5))
    te permettent d'avoir cette information

    les lignes en dessous te permettent de lire le contenu du fichier que tu vas envoyer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim Buffer As Variant
    Open "C:\heps.txt" For Binary Access Read Lock Read Write As #1
        Buffer = Input(LOF(1), #1)
        Close #1
    elles auraient aussi bien pu se trouver bien avant meme que tu commence la liaison , mais pourquoi pas ici. pas de problème

    Ensuite tu ouvres la seconde liaison, (le serveur s'attend à t'y voir arriver)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FTPUP.Connect "Knight-Server.Ath.Cx", FtpDataRemotePort
    Maintenant , sur la premiere liaison , tu lui envoies une ligne de protocole, lui disant que tu vas lui envoyer les datas du fichier qu'il devra stocker sous le nom de "fichier.exe"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FTP.SendData "STOR" & "fichier.exe"
    (je crois que tu as oublié un blanc apres le STOR)

    Si le serveur a bien tout pigé il te renvoie une ligne de protocole commencant par 150, en cas de difficulé le numero sera différent (exemple, le serveur FTP n'a pas été configuré pour le UpLoad)

    Mainenant tout est en place pour le transfert des données proprement dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FTPUP.SendData Buffer & vbCrLf
    Il te manque la fermeture du canal des données pour prévenir le serveur quand tu as tout envoyé

    Voila , j'espere que ces explications te permettront de trouver ou est le problème

Discussions similaires

  1. [VB.NET] transfert FTP via commande DOS
    Par HULK dans le forum Windows Forms
    Réponses: 4
    Dernier message: 21/04/2006, 16h45
  2. Impossible de contacter mon serveur FTP via ie
    Par Polskynet dans le forum Internet
    Réponses: 3
    Dernier message: 05/12/2005, 14h57
  3. [FLASH] Se connecter a un ftp via flash
    Par zthibaut dans le forum Flash
    Réponses: 2
    Dernier message: 24/11/2005, 19h34
  4. Transfert FTP via VB6
    Par Actarus69 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 03/11/2005, 14h55
  5. FTP via INET
    Par canorra dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 22/08/2005, 17h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo