Salut,
Moi j'en ais fait un programme avec des transfert en FTP
Voici le code qui doit te permettre de te connecter a un serveur et de
télécharger les fichiers présent sur ce dernier:
#include
#include<stdio.h>
#include<direct.h>
HINTERNET hInternetSession; // handle to internet connection
HINTERNET hFTPSession; // handle to FTP session
HINTERNET hFileConnection; // handle to file enumeration
WIN32_FIND_DATA sWFD; // structure to hold FIND data
FILE *trace;
int __cdecl main(int argc,char *argv[])
{
int erreur,nb,n,i,premier=0;
BOOL result,resultF;
char adresse_ip[100];
char login[100];
char mot_de_passe[100];
char fichier_dest[150];
char fichier_trace[150];
char fichier_dest2[180];
char chaine[500];
char nom_fic[150];
char temp[180];
char nouv[150];
char chemin_fichier[75];
if(argc<5)
{
printf("Il manque des arguments");
return 1;
}
strcpy(adresse_ip,argv[1]);
strcpy(login,argv[2]);
strcpy(mot_de_passe,argv[3]);
strcpy(fichier_dest,argv[4]);
sprintf(temp,
"%*.*s",
strrchr(fichier_dest,'\\')-fichier_dest,
strrchr(fichier_dest,'\\')-fichier_dest,
fichier_dest
);
sprintf(nouv,"%s_sauvegarde",temp);
sprintf(chemin_fichier,
"%*.*s",
strrchr(temp,'\\')-temp+1,
strrchr(temp,'\\')-temp+1,
temp
);
erreur=_mkdir(temp);
sprintf(fichier_trace,"%strace_MAJ_LM.txt",fichier_dest);
trace=fopen(fichier_trace,"w");
// Open Internet Session
HINTERNET hSession;
hSession = InternetOpen("toto", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL,
0);
if (hSession)
{
printf("\nConnexion au serveur FTP");
// Connexion au serveur FTP
HINTERNET hService;
hService = InternetConnect(hSession, adresse_ip,
INTERNET_DEFAULT_FTP_PORT, login, mot_de_passe,
INTERNET_SERVICE_FTP, 0, 0);
if(!hService)
{
nb=fwrite("Connexion à l'ordinateur distant
impossible\n",sizeof( char ),43,trace);
printf("Connexion à l'ordinateur distant impossible\n");
}
for(i=0;i5 && i<=(argc-4))
{
if(i>=2)
{
FtpSetCurrentDirectory(hService,"..");
//On revient un repertoire en arrière
}
printf("Nom du dossier a recuperer <%s>
\n",argv[4+i]);
result= FtpSetCurrentDirectory(hService,
argv[4+i]); //Recherche un repertoire sur le serveur et si trouvé on se
place dedans
if (result != TRUE)
{
nb=fwrite("repertoire impossible a
trouver sur le serveur FTP\n",sizeof( char ),50,trace);
printf("repertoire impossible a trouver
sur le serveur FTP");
}
strcpy(temp,fichier_dest);
strcat(temp,argv[4+i]);
sprintf(temp,"%s%s",argv[4],argv[4+i]);
erreur=_mkdir(temp);
sprintf(fichier_dest,"%s\",temp);
}
}
//Recherche le nom du premier fichier du repertoire
hFileConnection = FtpFindFirstFile(hService,"*",
&sWFD,0,0);
memset(nom_fic,'\0',sizeof(nom_fic));
strcpy(nom_fic,sWFD.cFileName);
strcpy(fichier_dest2,fichier_dest);
strcat(fichier_dest2,nom_fic);
// Téléchargement du fichier
result = FtpGetFile(hService, nom_fic, fichier_dest2,
0, 0, FTP_TRANSFER_TYPE_BINARY, 0);
DWORD error_two = GetLastError();
//Gestion des erreurs pour le transfert de fichier +
ecriture fichier de trace
if(result!=1)
{
strcpy(chaine,"Transfert du fichier ");
strcat(chaine,nom_fic);
strcat(chaine," impossible\n");
n=strlen(chaine);
nb=fwrite(chaine,sizeof( char ),n,trace);
printf("Transfert du fichier %s impossible\n",
nom_fic);
}
else
{
strcpy(chaine,"Fichier ");
strcat(chaine,nom_fic);
strcat(chaine," transféré avec succès\n");
n=strlen(chaine);
nb=fwrite(chaine,sizeof( char ),n,trace);
printf("\nFichier %s transfere\n", nom_fic);
}
}
resultF=1; //Initialisation de resultF à 1 pour pouvoir
rentrer dans la boucle
while(resultF==1) //resultF=1 -> tant qu'on trouve des
fichiers on continu
{
//Cherche le nom des fichiers suivants
resultF = InternetFindNextFile(hFileConnection, &sWFD);
memset(nom_fic,'\0',sizeof(nom_fic));
strcpy(nom_fic,sWFD.cFileName);
strcpy(fichier_dest2,fichier_dest);
strcat(fichier_dest2,nom_fic);
// Téléchargement du fichier
result = FtpGetFile(hService, nom_fic, fichier_dest2,
0, 0, FTP_TRANSFER_TYPE_BINARY, 0);
DWORD error_two = GetLastError();
//Gestion des erreurs pour le transfert de fichier +
ecriture fichier de trace
if(result!=1)
{
strcpy(chaine,"Transfert du fichier ");
strcat(chaine,nom_fic);
strcat(chaine," impossible\n");
n=strlen(chaine);
nb=fwrite(chaine,sizeof( char ),n,trace);
printf("Transfert du fichier %s impossible\n",
nom_fic);
}
else
{
strcpy(chaine,"Fichier ");
strcat(chaine,nom_fic);
strcat(chaine," transféré avec succès\n");
n=strlen(chaine);
nb=fwrite(chaine,sizeof( char ),n,trace);
printf("\nFichier %s transfere\n", nom_fic);
}
}
result=InternetCloseHandle(hFileConnection);
}
// Close the FTP connection
InternetCloseHandle(hService);
}
// Close the Internet connection
InternetCloseHandle(hSession);
fclose(trace);
printf("\nFin du prog");
return 0;
}
Voici l'ordre des paramèttres que tu dois envoyer lors de l'appelle du
programme:
1) Adresse IP ou nom de la machine du serveur FTP
2) Login de la connexion
3) Mot de passe de la connexion
4) Chemin en local ( Exemple: c:\test\ )
5) Dossier a transférer se trouvant sur le serveur (il faut donner le nom
du dossier qui se trouve sur le serveur si tu veux le transférer)
ATTENTION: Le fichier de destination sur la machine local doit-être créé
avant de lancer le prog!!!
Voila, bon courage
MegaMickx :big)