Taille d'un fichier serveur/client [Résolu]

Signaler
Messages postés
46
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
1 mars 2006
-
Messages postés
46
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
1 mars 2006
-
Salut,

Coté serveur: pour envoyer un fichier, il
faut dabord envoyer une structure qui contient les infos du fichier
(taille). Ensuite on ouvre le fichier, on le lis par paquet
(plusieurs Ko a la fois) et on envoie ces paquets.



Coté client, on receptionne la structure, on a donc la taille du fichier.

On ouvre le fichier, et on écrit dedant tout ce qu'on recoit jusqu'a ce qu'on ai recu le mon nombre d'octets. Puis on le ferme.





Je voudrais savoir comment avoir la taille du fichier



merci



a++

11 réponses

Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
Salut, voila une soluce qui marche sous Linux et Windows, en C ou en C++, la taille retournée est en octets dans le long size

EN C :
FILE * file=fopen("fichier.txt","rb");
if(file!=NULL)
{
if(fseek(file,0,SEEK_END)==0)
{
long size=ftell(file);
std::cout << "SIZE : " << size << std::endl;
}
fclose(file);
}


EN C++ :
std::ifstream fileCpp("fichier.txt");
if(fileCpp)
{
fileCpp.seekg(0,std::ios::end);


long size=fileCpp.tellg();
std::cout << "SIZE : " << size << std::endl;

fileCpp.close();
}

KeniiyK
Messages postés
41
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
3 mars 2006

hello,
tu fait un FindFirstFile.
ca te rempli une structure WIN32_FIND_DATA qui contient la taille de ton fichier:

typedef struct _WIN32_FIND_DATA { // wfd
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName[ MAX_PATH ];
TCHAR cAlternateFileName[ 14 ];
} WIN32_FIND_DATA;

HANDLE file;
WIN32_FIND_DATA data;
file=FindFirstFile("c:\\mon_fichier.txt",&data);
FindClose(file);

si ton fichier n'existe pas: file=INVALID_HANDLE_VALUE

A+
Messages postés
46
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
1 mars 2006

je programme sous linux et non sous windows ,

donc tu aurai l'équivalent sous linux sa serait cool
Messages postés
41
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
3 mars 2006

désolé, mais j'ai pas l'équivalent linux

ps: c'etait pas précisé linux ou j'ai loupé un truc ?
Messages postés
41
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
3 mars 2006

désolé, mais j'ai pas l'équivalent linux

ps: c'etait pas précisé linux ou j'ai loupé un truc ?
Messages postés
124
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
16 février 2006
2
man lstat

dans la structure renvoye ya la taille du fichier !
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010

Bonsoir,

pour coyottepouetpouet : c'était pas précisé windows ou j'ai loupé un truc.

Matt...
Messages postés
124
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
16 février 2006
2
std::cout << "SIZE : " << size << std::endl;

ca n'est pas du tout du c++ ...

a remplacer par :
printf("SIZE : %f\n", size);
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
Erf erf erf, oui... désolé. J'ai posté un peu vite....
Mais par contre ce n'est pas %f qu'il faut mettre dans le printf mais %d, %f c'est pour les float.

KeniiyK
Messages postés
124
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
16 février 2006
2
oula oui xD
Messages postés
46
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
1 mars 2006

merci c nikel sa marche