Accueil > Forum > > > > [C] Transfert de fichier par sockets
[C] Transfert de fichier par sockets
mercredi 29 octobre 2003 à 18:26:42 |
[C] Transfert de fichier par sockets

bonobo78
|
salut ! j'ai un petit pb pour transmettre un fichier via des sockets. En fait, je decoupe le fichier en petit bout de 1024 octets et je transmets chaque bout par la socket. Mais comment s'arreter à la fin du fichier. Car ici, le dernier bout qui ne fait pas 1024 octets, contient la fin du fichier plus la fin du buffer du while précédant. FILE * File; char *message; int msg = ACK; int taille = 1024;
File = fopen(path,"r"); message = (char*)malloc(1024);
while((!feof(File))){ fread(message,1024,1,File); if(write(sock,message,1024) == -1){ perror("EnvoieFichier2"); exit(2); } } free(message); fclose(File); msg = FINFICHIER; printf("Fin de fichier\n"); if(write(sock, &msg, sizeof(msg)) == -1){ perror("FinEnvoi"); exit(2); }
|
|
|
mercredi 29 octobre 2003 à 18:31:58 |
Re : [C] Transfert de fichier par sockets

Anacr0x
|
tu sauvegarde la valeur de retour de fread et tu remplace ton 1024 avec
size_t n = fread(message,1024,1,File); if(write(sock,message,n) == -1){
ca devré etre bon
|
|
mercredi 29 octobre 2003 à 18:57:31 |
Re : [C] Transfert de fichier par sockets

bonobo78
|
fread renvoie 0 ou 1 en fonction si il arrive a lire ou pas la taille (1024).
et ca m'oblige d'envoyer la taille au client ! c embettant :(
|
|
mercredi 29 octobre 2003 à 19:02:46 |
Re : [C] Transfert de fichier par sockets

Anacr0x
|
"fread returns the number of full items actually read" donc pas 0 ou 1
En fait, tu t'es trompé dans l'ordre des param : ce n'est pas : fread(message,1024,1,File); mais : fread(message,1,1024,File);
et la ca te renvéra le bon nombre
|
|
mercredi 29 octobre 2003 à 19:08:04 |
Re : [C] Transfert de fichier par sockets

Anacr0x
|
"et ca m'oblige d'envoyer la taille au client ! c embettant :( " -> de tte facon, je crois que tu est obligé d'envoyer la taille totale du fichier
parceque quand il recevra les données, il fera ca dans une boucle while, mais cette boucle ne peut pas savoir quand s'arété sauf si tu lui a passé d'abord la taille du fichier qu'elle comparera avec ce qu'elle a reçu
ou alors il y a une autre technique que je ne connais pas
|
|
mercredi 29 octobre 2003 à 19:13:39 |
Re : [C] Transfert de fichier par sockets

aardman
|
Salut, Si tu recois un buffer qui contient moins de 1024 octets tu peut interpreter ca comme la fin du fichier et sortir de ta boucle. Mais bon je pense aussi qu'envoyer la taille du fichier est le plus sur.
|
|
mercredi 29 octobre 2003 à 19:16:24 |
Re : [C] Transfert de fichier par sockets

Anacr0x
|
ah oui tien, j'avais pas pensé a ça, mais en imaginant qu'il y a un petit pb de connection ou de ralentissement, il ne recevra pas le packet en entier et pfiou ! le fichier sera foutu. Comme tu le dit, je pense aussi qu'envoyer la taile est plus sur
|
|
mercredi 29 octobre 2003 à 19:21:08 |
Re : [C] Transfert de fichier par sockets

Anacr0x
|
au fait, puisqu'on est en plin dans les socket, j'en profite pour te demandé un petit conseil aardman, toi qui t'y connais très bien sur ce sujet :
quand on envoyer plusieur petit paquet rapidemment, le serveur peut les "recoller", et ca, de tps en tps, ca m'embète un peu puisque je fait un strncmp() sur le début de la chaine Y a-t-il un moyen d'empécher ce regroupement ?
|
|
mercredi 29 octobre 2003 à 19:23:12 |
Re : [C] Transfert de fichier par sockets

bonobo78
|
comment on fait un printf d'un size_t ?
|
|
mercredi 29 octobre 2003 à 19:26:10 |
Re : [C] Transfert de fichier par sockets

Anacr0x
|
un size_t c 'est à peu de chose près comme un int, donc tu fait un %d (met un cast si le compilo n'aime pas ca)
|
|
Cette discussion est classée dans : fichier, fin, message, file, msg
Répondre à ce message
Sujets en rapport avec ce message
Envoi de fichier non complet [ par trafounet ]
bonjour à tous,je cherche à envoyer un fichier par socket et ca marche pour les fichiers de petite taille (quelques ko) mais malheuresement dès que le
cherchet afficher un ou plusieurs ligne d'une fichier texte . [ par brell ]
bon jour! cette fonction a comme parametre fichier contenant les messages et une chaine de caracteres contenant le destinateur. cette fonction permet
chargement d'une liste chainée à partir d'un fichier binaire qui contient des structures [ par achmer ]
bonjours à tous... j'ai un petit problème au niveau de la récupération des structures (patient) enregistrées dans un fichier bonaire ,pour les charge
Impossible d'écrire dans un fichier [ par snpier wolf ]
Bonjours à vous, Je suis entrain de créer un Logeur, il fonctionne pour loguer un message dans une Message Box dans une console mais pas dans un fichi
Ouvrir le nom d'un fichier dans une chaîne de caractères [ par noname001 ]
Bonjour à tous, J'ai un soucis dans le développement d'un programme. En effet, j'ouvre tout d'abord un fichier.txt qui contient toute une liste de no
(win32)Fichier et buffer en lecture seule [ par mogwai93 ]
Bonjour Je voudrais lire un fichier, placer le contenu de ce fichier dans un buffer et modifier ce buffer (mais pas le fichier). J'arrive bien à ou
Problème de sauvegarde de fichiers en gtk [ par tony952 ]
Bonjour j'ai un soucis pour la sauvegarde de fichiers en GTK. Lorsque j'ouvre le fichier que j'ai enregistré, le programme m'affiche des symboles inco
Comment trouver la fin d'un fichier avec fonctions windows [ par dante20007 ]
Bonjour, je voudrais détecter la fin de mon fichier en termes de caractères.J'ai essayé avec la fonction (feof) mais elle ne me donne pas mon dernier
files de messages [ par spark01 ]
Bonjours Je voudrai savoir si la taille d'une file de message est fixe ou dynami
charger le contenu d'un QtextEdit dans un fichier [ par naddoush ]
salut tout le monde, dans mon application j'ai un QtextEdit et un bouton save à coté.je voudrais bien qu'on ecrivant quelques lignes dans ce Qtextedit
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|