Decouper un fichier avant le transfert via un socket

Résolu
joe_la_mousse Messages postés 4 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 30 septembre 2005 - 24 sept. 2005 à 00:10
SpidersX Messages postés 4 Date d'inscription mardi 10 décembre 2002 Statut Membre Dernière intervention 10 octobre 2005 - 10 oct. 2005 à 12:12
J'espere bien que vous pourrez m'aider...



Je dois coder une application client serveur (avec un gteway au milieu) afin de transferer un fichier.



Pur l'instant tout se passe bien (les messages passe bien du client au
gateway et du gateway au serveur) mais j'aurais aimer savoir comment on
decoupe un fichier en petit block avant de les envoyer...



Je debute...



Merci d'avance

25 réponses

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
25 sept. 2005 à 11:51
aardam> Sur une grande majorité des docs que j'ai pu lire sur TCP/IP et les sockets, 8Ko est la taille qui convient le mieux pour des envoies intégrales de fichier.
EMule n'utilise pas cette capacité car il transfère les fichiers par morceaux sans aucun indicatif de taille fixe, ceci pour ne pas surcharger le réseaux
comme le faisait les anciens client Edonkey. Vu le nombre croissant d'utilisateurs, cela restreignait les possibilités de téléchargemet.

Pour ce qui est de l'UDP, pourquoi prends tu l'exemples des 56K qui n'existe carement plus.
Quand tu fais un soft tu le fais pour une majorité et non pas pour une minorité.
Tu t'imagines Microsoft maintenir un windows spéciallement pour les anciens proc 8/16 bits ?

L'UDP est le protocol le plus utilisés dans tous ce qui est jeu en réseaux, sa fiabilité reste correcte.
Le seul incovénients est sa mise en place qui nécéssite dans ce cas la un checksum.

Quoi qu'il en soit, ta solution reste quand meme la plus simple a mettre en oeuvre.

Shell
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
25 sept. 2005 à 14:55
Salut,

J'ai pris l'exemple du 56k et de la freebox car c'est dans ce cas
'extreme' que la probabilité de perte de paquets est la plus grande.
Mais tout ce que j'ai dis reste vrai pour tout les types de connexions.

L'UDP est utilisé dans les jeux en reseau, mais le jeux en reseau n'est
pas un transfert de fichier. Il s'agit plutot d'envoyer periodiquement
aux autres joueurs la position de tes joueurs, et de recevoir les
positions des autres joueurs.. et la udp est parfait.
0
SpidersX Messages postés 4 Date d'inscription mardi 10 décembre 2002 Statut Membre Dernière intervention 10 octobre 2005
10 oct. 2005 à 11:52
Hello,

J'ai du mal avec le fread :

while(!feof(FichR))
{
len=fread(Buffer,1,1000,FichR);
send(sock,Buffer,len,0);
//Calcul de vitesse enfin tout que tu veux (avec la taille récupéree plus haut)
}

-> Si je comprends bien dans fread(Buffer,1,1000,FichR) :

1 = l'unité est 1 bit
1000 = la taille à lire 1000 bits

Ce qui ne fait pas 1Ko comme dit plus haut (?)

Pour transferer 8Ko par exemple il faut rentrer quoi comme valeur?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
10 oct. 2005 à 12:03
il n'y a jamais rien de calculé en bit mais toujours en octet, c'est la plus petite entité que l'on puisse adresser.
On ne peut manipuler les bits qu'à l'intérieur d'un octet, rien d'autre.

ciao...
BruNews, MVP VC++
0

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

Posez votre question
SpidersX Messages postés 4 Date d'inscription mardi 10 décembre 2002 Statut Membre Dernière intervention 10 octobre 2005
10 oct. 2005 à 12:12
Ha oki,
c'est le FILE* FichR=fopen("MonfichierALire","rb"); qui m'a destabilisé.
Je pensais que c'etait read bit

Donc tout bête, pour 8Ko fread(Buffer,1,8000,FichR)

Merchi ^^
0
Rejoignez-nous