bonobo78
Messages postés9Date d'inscriptionmardi 28 octobre 2003StatutMembreDernière intervention29 octobre 2003
-
29 oct. 2003 à 18:26
Anacr0x
Messages postés515Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention27 avril 2006
-
29 oct. 2003 à 20:51
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.
Anacr0x
Messages postés515Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention27 avril 20062 29 oct. 2003 à 19:08
"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
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 29 oct. 2003 à 19:13
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.
Anacr0x
Messages postés515Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention27 avril 20062 29 oct. 2003 à 19:16
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
Anacr0x
Messages postés515Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention27 avril 20062 29 oct. 2003 à 19:21
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 ?
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 29 oct. 2003 à 19:31
Salut,
Honnetement je peut pas te repondre précisement, j'ai jamais fait ca. En TCP, le serveur lis dans son buffer tout ce qu'il peut lire, donc je pense qu'en mettant un buffer d'envoi de la meme taille de le buffer de reception, il n'y aura pas de probleme.
Anacr0x
Messages postés515Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention27 avril 20062 29 oct. 2003 à 19:48
ah nan, scuse, j'ai parler trop vite et j'avais mal compris ce que tu voulais dire !
je peut quand même envoyer la fin du buffer (même si je ne l'utiliserai pas) et du coup ca tombera juste, merci !
Anacr0x
Messages postés515Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention27 avril 20062 29 oct. 2003 à 20:51
GetFileSize peut marcher pour un fichier mais ca dépant de la façon dont tu l'ouvre, il faut utilisé du win32 donc CreateFile
Pour la taille du dossier, tu pourrait utilisé FindFirstFile et FindNextFile mais je suppose qu'il y a un moyen bien plus pratique, seulement la je ne le connais pas désolé