Ftp Wininet

Résolu
Utilisateur anonyme - 4 juil. 2006 à 06:45
 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 

14 réponses

Utilisateur anonyme
5 août 2006 à 15:17
!~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 
3
Utilisateur anonyme
7 août 2006 à 21:37
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 
3
MNEMONIC Messages postés 59 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 1 septembre 2006
4 juil. 2006 à 15:59
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.
0
Utilisateur anonyme
4 juil. 2006 à 16:01
Oui mais meme sans le sleep ca marche pas et la je l'ai placé aprés avoir fermé la conection :(

MaLaDeDeDe 97one 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
4 juil. 2006 à 16:22
Salut,
Verifie le retour de chaque fonction et en cas d'erreur affiche la valeur de retour de GetLastError().
0
Utilisateur anonyme
4 juil. 2006 à 16:25
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 
0
Utilisateur anonyme
4 juil. 2006 à 16:30
Bizarre parceque l'erreur numero 2 n'exsiste pas: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/wininet_errors.asp

MaLaDeDeDe 97one 
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
4 juil. 2006 à 16:42
Salut,

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

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

<dt>ERROR_INTERNET_TIMEOUT
</dt><dd>12002
MaLaDeDeDe 97one </dd>
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
4 juil. 2006 à 23:06
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
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
5 juil. 2006 à 13:36
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.
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
5 juil. 2006 à 13:38
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.
0
Utilisateur anonyme
5 juil. 2006 à 16:55
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 
0
Utilisateur anonyme
5 juil. 2006 à 19:27
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 
0
Rejoignez-nous