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 :

Comment faire du FTP ?


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de MegaBigBoss
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 144
    Par défaut Comment faire du FTP ?
    Alors je cherche comment faire du FTP (sans iNET qui ne fonctionne qu'avec les petits fichier (testé))rapidement du style 1 H pour un Giga!!! Je sais, je sais ...... j'enn demande trop mais est-ce possible ?
    Si oui comment ?

    Merci

    MegaBigBoss

  2. #2
    Membre confirmé
    Inscrit en
    Novembre 2004
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 136
    Par défaut
    Je ne sais pas si je comprend bien ta question, mais est-ce que tu désires faire un serveur ftp ou un client ftp? Si c'est cela, oui il est possible de se faire un serveur ftp en vb et un client. Je l'ai déjà fait moi-même en java. Je ne verrais pas pour quelle raison ce serait impossible de le faire en vb6. Attention, en vb6 il est impossible de faire des thread. Donc, ton serveur ftp ne pourra pas accepter plusieurs connexions à la fois. Il devra servir un client à la fois, donc je ne trouve pas cela pratique. Si possible, je te conseille de développer ton serveur ftp sur un autre langage de programmation.

  3. #3
    Membre confirmé Avatar de MegaBigBoss
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 144
    Par défaut
    Non je souhaite télécharger un fichier !!!
    Je reçois une reponse de l'ordi sur lequel je telecharger en local mais aucune trace du fichier choisi !

    Private Sub Form_Load()
    With Inet1
    .URL = "ftp://*******"
    .UserName = "********"
    .Password = "*****"
    .Execute , "Get \\Nas\Share\Maison\******\Test.txt"

    End With
    End Sub

  4. #4
    Membre éprouvé Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Par défaut
    Mais si, on peut parfaitement faire un serveur TCP (et donc des protocoles au-dessus) en VB qui sert plus d'un client. Il suffit d'utiliser un tableau de controles Winsock (fourni avec VB6).

    On ne crée en développement que l'indice 0. Ce socket est en écoute permanente. Lorsque le socket 0 reçoit une demande de connexion, le code crée une nouvelle instance N du socket, lui passe les paramètres de connexion et lui donne l'ordre de répondre à la demande. Le socket 0 repasse alors en écoute, tandis que le socket N dialogue avec le nouveau client. Lorsque la communication du socket N est interrompue, le code décharge l'instance et on revient au point de départ.

    J'ai réalisé ainsi un serveur Modbus/TCP. Certes ce n'est pas du FTP, mais la différence ne tient que dans le dialogue, et le FTP est plus simple à implémenter que le Modbus (quoique le nombre de commandes FTP soit plus important). Le FTP a aussi pour particularité de nécessiter deux connexions simultanées pour transmettre les données (une pour le dialogue de commande, une pour la transmission des données).

    J'ai également créé un client FTP avec le contrôle Winsock de VB. Cependant, il est clair que transmettre un fichier de 1Go a toutes les chances de ne pas aboutir. Moi, même avec Filezilla ou CuteFTP, je n'arrive jamais à dépasser 200-300 Mo sans coupure.

    La solution est d'utiliser alors les fonctions REST et APPE qui permettent de reprendre un STOR ou un RETR à un endroit quelconque d'un fichier. A noter que certains serveurs (dont ceux de Free !) n'acceptent pas ces commandes.

    Mais le développement d'un serveur FTP en VB n'est guère à la portée d'un débutant... Dans un autre langage non plus d'ailleurs. Il faudra implémenter la plupart des commandes FTP, et surtout la gestion d'erreur qui evite un plantage définitif de la communication en cas de désynchronisation ou de réponse inattendue.

    L'avantage d'iNet, c'est que le protocole FTP est tout fait. Alors pourquoi vouloir s'en passer ?

    Autre solution, que j'utilise personnellement car c'est de loin la plus simple (enfin, une fois qu'elle est au point !) : Je crée un fichier de commandes FTP (fichier texte, ecrit par mon appli VB) puis je lance un batch FTP en fournissant ce fichier en paramètre. Exemple concret :

    Mon code écrit, à l'aide de Open et Print#, le petit fichier texte suivant, nommé SendFile.ftp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    open Serveur.distant.com
    user MyLogin MyPassword
    put NomFichierSource NomFichierDest
    disconnect
    quit
    Pour importer un fichier, il suffit de remplacer put par get. Bien sûr on peut utiliser les commandes de changement de répertoire, ou préciser ces derniers selon le besoin.

    Ensuite, il faut créer un fichier .bat qui lance FTP avec le fichier de commandes en paramètre. On en profite pour créer un fichier journal dans lequel on trouvera tout le détail de la connexion et du transfert (FTP est rès bavard). On appellera par exemple ce fichier SendFile.bat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo ------------------------------ SEND FILE ------------------- > SendFile.log
    ftp -n -s:SendFile.ftp >> SendFile.log
    echo ------------------------------ TERMINE --------------------- >> SendFile.log
    Après avoir écrit ces fichiers, il suffit d'utiliser Shell pour lancer le batch. Voici un extrait du code que j'utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        'Exécution du fichier de commandes
        sCmd = GetShortName(sCmdFile)
        If sCmd <> "" And Dir(sCmd) <> "" Then       'On vérifie que le fichier existe
             If Mid(sCmd, 2, 1) = ":" Then ChDrive Left(sCmd, 1)
            ChDir GetDirectoryFromPath(sCmd)
            Shell sCmd, vbHide
        End If
    sCmdFile est le chemin complet du fichier de batch (SendFile.bat dans notre exemple).
    GetShortName est une fonction de l'API Windows (voir la MSDN) ou la visionneuse d'API de VB). Il permet d'obtenir un chemin de fichier conforme aux impératifs de MS-DOS.
    GetdirectoryFromPath est une des fonctions de ma librairie personnelle qui extrait le répertoire du chemin d'un fichier.
    Le reste est du VB standard

    Bien sur, on pourrait faire plus court, se passer du fichier .bat et lancer directement FTP avec ses paramètres. Mais mon fichier .bat fait bien d'autres choses, dont l'export/import de plusieurs fichiers sur des serveurs distincts, avec insertion de la date et de l'heure, etc.

  5. #5
    Membre confirmé Avatar de MegaBigBoss
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 144
    Par défaut
    Je n'ai absolument rien compris (pas doué(moi)) lol .
    Mai moi c'est avec iNET !!!

  6. #6
    Membre éprouvé Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Par défaut
    Citation Envoyé par MegaBigBoss
    Mai moi c'est avec iNET !!!
    Alors pourquoi écrire dans la première contrib :
    Alors je cherche comment faire du FTP (sans iNET qui ne fonctionne qu'avec les petits fichier ....
    Faudrait savoir ce qu'on veut !

  7. #7
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    Faudrait savoir !!

    Citation Envoyé par MegaBigBoss
    Alors je cherche comment faire du FTP (sans iNET qui ne fonctionne qu'avec les petits fichier (testé
    Citation Envoyé par MegaBigBoss
    Je n'ai absolument rien compris (pas doué(moi)) lol .
    Mai moi c'est avec iNET !!!

  8. #8
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    MGD_Software plus prompt

    Bonsoir, content de te revoir parmi nous

Discussions similaires

  1. SSIS FTP Task : comment faire un FileWatcher ?
    Par Mathusalem dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 05/03/2009, 13h49
  2. FTP et PHPEclipse, comment faire ?
    Par yvon_huynh dans le forum Eclipse PHP
    Réponses: 4
    Dernier message: 18/10/2006, 00h49
  3. Comment faire pour savoir si on est connécté à un FTP ?
    Par MegaBigBoss dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 23/08/2006, 21h33
  4. [C#][VS] Comment faire du FTP
    Par ikritt2 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 07/07/2006, 17h11
  5. [C#][FTP] Comment faire du FTP?
    Par bakonu dans le forum C#
    Réponses: 2
    Dernier message: 29/03/2006, 13h47

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