TRANSFERT DE FICHIER

cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013 - 10 août 2011 à 14:38
 rami - 13 mai 2016 à 03:27
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/53449-transfert-de-fichier

il marche pas j ai eu une erreur c'est The specified path is invalid
svp aide moi :/
j'ai essayé avec des fichiers PDF 2.5 MO il me donne des fichiers PDF reçus endommagés
Utilisateur anonyme
22 avril 2013 à 18:39
Vraiment merci pour ton exemple, tu m'as fais découvrir la "déserialization" d'objets :).

Sorpia.
The Meteorologist Messages postés 232 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 3 novembre 2011 1
30 août 2011 à 16:18
Concernant l’intégrité des données, un contrôle MD5 est a priori superficiel. Le protocole TCP/IP inclut automatiquement un checksum dans l'en-tête de tous les paquets échangés. Il garantit donc que le fichier ne sera pas corrompu à son arrivée ;)

http://www.misfu.com/introduction-tcpip.html

Simon
elassas Messages postés 3 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 24 juillet 2009
28 août 2011 à 03:55
Salut VinceMonkeyz,

Je t'invite à voir ce projet : http://www.codeproject.com/KB/files/fastbinaryfileinput.aspx

Cordialement,
Utilisateur anonyme
27 août 2011 à 15:29
Salut elassas, maintenant oui.

Avant j'utilisais les méthodes ReadAllBytes/WriteAllBytes, qui sont très pratiques mais qui sont limitées; j'étais bloqué à environ 60mo.

Maintenant je lis le fichier par paquets de 32768 bits, paquets qui sont envoyés dans la foulée, et c'est pareil côté réception, le fichier est écrit petit à petit.

Après quelques tests, j'ai pu transférer un fichier de 6.4go, avec des perfs qui me semble correctes
elassas Messages postés 3 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 24 juillet 2009
16 août 2011 à 11:53
Salut,

Comment le programme réagit au transfert de fichiers de plus de 10 GO ?

Cordialement,
Utilisateur anonyme
10 août 2011 à 17:38
Salut,

Merci de ton avis.
J'ai posté cette source volontairement simpliste parce que justement, je ne trouvais pas de code permettant un transfert fiable; les solutions proposées utilisent souvent les méthodes Read() et Write() des classes NetworkStream ou Socket, ce qui m'a donné des résultats très aléatoires.

Avec cette méthode, j'arrive à transférer un fichier audio de presque 8mo sans qu'il soit corrompu.

Cela dit, l'idée du checksum est bonne.
Concernant l'échange "intelligent", ça va un peu plus loin, mais c'est intéressant, j'essaierai d'adapter ça à l'occasion.

Encore une fois, le but de cette source est de donner une méthode simple et fiable pour transférer un fichier, je ne pense pas y apporter des modifs (ou alors, dans un zip à part)
cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013
10 août 2011 à 14:38
C'est un bon début mais il ne faudrait pas s'arrêter là.

Des points à améliorer :

- Aucune protection dans ton code permet de vérifier que le fichier envoyé est bien celui réceptionné. Un simple Hash MD5 ferait l'affaire histoire d'apporter un brun de sécurité.

- D'autre part, tu pourrais implémenter une file FIFO afin de réceptionner chaque paquet permettant ainsi d'envisager l'interruption de l'envoi.

Lors de la communication de chaque paquet, tu envois son Hash, le client te confirme la réception, tu envoies le paquet puis le client confirme la réception. Si au bout d'un certain temps, le client ne reçois plus de paquet sans avoir reçu la confirmation de fin de transmission, c'est le client qui se connecte au serveur pour demander la suite. Si le client n'arrive pas à joindre le serveur, il se met en attente jusqu'à pouvoir réessayer.

Bref, un échange intelligent.

A creuser.

Le code sinon est simpliste, on en trouve un certain nombre comme celui-là sur internet. 6/10 donc.
Rejoignez-nous