Ftp Wininet [Résolu]

Utilisateur anonyme - 4 juil. 2006 à 06:45 - Dernière réponse :  Utilisateur anonyme
- 7 août 2006 à 21:37
A l'aide je me ss aidé de la msdn pr obtenir le code suivant:
Mains il creer juste le fichier pio.txt sur mon ftp sans le contenu et bien sur a l'ecran c'est afiché echec.
Voici le code:

#include<stdio.h>
#include<windows.h>
#include<wininet.h>


int main(void)
{   
 HINTERNET InternetSession;
 HINTERNET FtpConnect;
    
 InternetSession = InternetOpen("testFtp" , INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
FtpConnect = InternetConnect ( InternetSession, "ftp.membres.lycos.fr", INTERNET_DEFAULT_FTP_PORT, "LOGIN", "PASS", INTERNET_SERVICE_FTP, 0, 0);
    
 if(TRUE==FtpPutFile( FtpConnect, "pio.txt", "pio.txt", FTP_TRANSFER_TYPE_BINARY, 0))
    printf("Reussi");
 else printf("Echec");
    
InternetCloseHandle(FtpConnect);
InternetCloseHandle(InternetSession);
    
Sleep(10000);
return 0;  
}



MaLaDeDeDe 97one 
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
Utilisateur anonyme - 5 août 2006 à 15:17
3
Merci
!~yep~!

Alors j'ai parlé de mon probleme a un ami et il m'a dit de vérifier si le server n'était pas en mode passive.
J'ai donc commencé a chercher sur internet ce que cela signifié et j'ai trouvé cela: http://www.dicodunet.com/definitions/hebergement/ftp-passif.htmet et http://slacksite.com/other/ftp.html
et sur ces sites on montre bien que pour le data... ce ne sont pas les memes port utilisé d'ou le probleme pour envoyer un fichier et lister le contenu d'un repertoire.

Alors maintenant j'ai regardé comment mettre en mode passive avec wininet et j'ai trouvé qu'il fallait mettre un flag:

<<>>

Je suis pas sur mon ordi je dois changé la RAM dés que cela sera je vais tester cela: WinInet en mode passive sur lycos et je vous dit si cela marche
MaLaDeDeDe 97one 

Merci Utilisateur anonyme 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
Meilleure réponse
Utilisateur anonyme - 7 août 2006 à 21:37
3
Merci
VOILA ENFIN CA MARCHE !!!

Le serveur ftp étant en mode passive il faut mettre le FLAG INTERNET_FLAG_PASSIVE à la fonction InternetConnect () :
InternetConnect ( hInternetSession, ftpi, INTERNET_DEFAULT_FTP_PORT , logi, passi, INTERNET_SERVICE_FTP,  INTERNET_FLAG_PASSIVE, 0);

MaLaDeDeDe 97one 

Merci Utilisateur anonyme 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
MNEMONIC 59 Messages postés dimanche 19 décembre 2004Date d'inscription 1 septembre 2006 Dernière intervention - 4 juil. 2006 à 15:59
0
Merci
Il me semble avoir vu quelque part que le Sleep fermait la connection ou un truc du genre...
Essaye en mettant un boucle d'attente à la place, avec une vérification de la taille du fichier sur le serveur distant.
Commenter la réponse de MNEMONIC
Utilisateur anonyme - 4 juil. 2006 à 16:01
0
Merci
Oui mais meme sans le sleep ca marche pas et la je l'ai placé aprés avoir fermé la conection :(

MaLaDeDeDe 97one 
Commenter la réponse de Utilisateur anonyme
cs_aardman 1905 Messages postés mercredi 22 janvier 2003Date d'inscription 17 septembre 2012 Dernière intervention - 4 juil. 2006 à 16:22
0
Merci
Salut,
Verifie le retour de chaque fonction et en cas d'erreur affiche la valeur de retour de GetLastError().
Commenter la réponse de cs_aardman
Utilisateur anonyme - 4 juil. 2006 à 16:25
0
Merci
InternetOpen et FtpConnect marche bien c'est pour FtpPutFile l'eereur retourné est 2.
je vais voir la signification de l'erreur 2 sur msdn
MaLaDeDeDe 97one 
Commenter la réponse de Utilisateur anonyme
Commenter la réponse de Utilisateur anonyme
cs_aardman 1905 Messages postés mercredi 22 janvier 2003Date d'inscription 17 septembre 2012 Dernière intervention - 4 juil. 2006 à 16:42
0
Merci
Salut,

Erreur 2: Le fichier spécifié est introuvable.

Apparement ca vient du fichier local, essayes de mettre son chemin complet FtpPutFile().
Commenter la réponse de cs_aardman
Utilisateur anonyme - 4 juil. 2006 à 16:51
0
Merci
Merci j'ai plus la meme erreur maintenant c'est l'erreur:

<dt>ERROR_INTERNET_TIMEOUT
</dt><dd>12002
MaLaDeDeDe 97one </dd>
Commenter la réponse de Utilisateur anonyme
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 4 juil. 2006 à 23:06
0
Merci
Très bon l'explication de MNEMONIC. Déja aucune raison que le Sleep coupe la connxion, mais de toute facon il se situe à la fin du code, après la fermeture explicite de la connexion

_____________________________________
Un éditeur de ressources gratuit pour Windows
Commenter la réponse de vecchio56
deck_bsd 1244 Messages postés jeudi 31 mars 2005Date d'inscription 3 août 2016 Dernière intervention - 5 juil. 2006 à 13:36
0
Merci
Met le chemin complet du fichier local , si cela ne va toujours pas essye FTP_TRANSFER_TYPE_ASCII à la place de FTP_TRANSFER_TYPE_BINARY , bien que je pense que dans les 2 cas cela devrait fonctionner, mais on ne sais jamais.
Commenter la réponse de deck_bsd
deck_bsd 1244 Messages postés jeudi 31 mars 2005Date d'inscription 3 août 2016 Dernière intervention - 5 juil. 2006 à 13:38
0
Merci
Si tu ne veu pas mettre le chemin complet dans ton nom de fichier , fait un
SetCurrentDirectory(char * szPath); avant avec le chemin du fichier.
Commenter la réponse de deck_bsd
Utilisateur anonyme - 5 juil. 2006 à 16:55
0
Merci
Non je n'ai pas mit SetCurrentDirectory parceque ca ne me derange pas de marquer la root du fichier local.
Sinon toujours la meme erreur :( que le fichier soit envoyé en binaire ou interprété comme carctaire :(

MaLaDeDeDe 97one 
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 5 juil. 2006 à 19:27
0
Merci
J'ai testé sur mon compte ftp ifrance et ca marche nikel.
Alors je pense que wininet marche pas avec lycos multimania.
Je ne vois que ca!

Parceque j'ai juste changé les identifiants et l'adresse FTP et ca a marché pour ifrance.
Et pour Lycos ca marche pas ca crée juste le fichier texte pio.txt mais sans transmettre le contenu.

Alors je pense qu'on ne peut rien faire :'(

MaLaDeDeDe 97one 
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.