Transfert de fichiers entre 2 pc distants

Soyez le premier à donner votre avis sur cette source.

Vue 30 347 fois - Téléchargée 3 996 fois

Description

Bonjour,

Cette source permet, pour commencer en quelques mots, d'échanger des fichiers à travers un réseau ou internet en Tcp.

Elle se compose d'une application serveur très rudimentaire et d'un client plus fignolé graphiquement..

Le fonctionnement est très simple.

Au préalable le serveur se trouve sur un pc (pc n°1), et le client sur un autre (pc n°2), les deux pc ayant le Framework ;).
(Vous pouvez tester en local si ça vous chante..)

L'utilisateur du pc n°1 lance l'application serveur, choisi un port, et appuie sur le bouton E (écoute).
L'application devient couleur orange si réussite, elle attend un client.

L'utilisateur du pc n°2 lance le client, tape l'adresse IP du pc n°1, rentre le même port, et appuie sur C (connexion).
Si tout se passe bien, le texte devient vert et la couleur de la form de l'application serveur verte aussi.

Vous avez maintenant créé un canal.

L'utilisateur du pc n°1 n'a plus qu'a choisir un fichier.

Le transfert débute.

Si le fichier existe sur le pc n°2, alors une boite de dialogue permet de choisir l'action a effectuer entre reprendre, annuler ou écraser..

A la fin du transfert, l'utilisateur du pc n°1 peut renvoyer un fichier directement..


Côté code, plutôt simple à comprendre et minimaliste. La gestion d'erreur n'est pas optimisée mais présente. Bien commenté. Repose sur l'utilisation des sockets en Tcp.

Nb : Bien vérifier que les ports choisis sont ouverts (routeurs, passerelles...)
Nb2 : Vous n'avez pas à retaper la même ip et port à chaque fois, ceux-ci sont sauvés à chaque modification..
Nb3 : Vous pouvez envoyer plusieurs fichiers en même temps, en relançant à chaque fois le client et le serveur avec des ports différents.
Nb4 : Vitesse limité selon votre connexion en émission et en réception. Ex je suis limité à 128ko/sec en upload, donc mon client recevra à cette vitesse. Je ne peut recevoir qu'à 1Mo/s, si le serveur peut envoyer plus (3Mo/sec par ex) je recevrai quand même à ma vitesse limite de download, soit 1Mo/sec.

Nb5 : Je n'ai pas utilisé les fonctions BeginSend et BeginReceive pour la simple raison qu'on n'a aucun contrôle de ce qui se passe derrière. Conseil, créez votre propre fonction asynchrone. C'est ce que j'ai fait suite à une erreur de Buffer saturé de la fonction, c'est un gouffre à octets, peu recommandé pour le transfert de fichiers. L'erreur provenait du fait que je lisais plus vite le fichier que je ne l'envoyais, donc on stocke, on stocke et ... error.. Il a donc fallu trouver une alternative (voir le code).

Optimisations à apporter, si ça vous fait plaisir..
-La gestion d'erreurs améliorée
-Compression à l'envoi (augmentation du débit, augmentation de la charge de travail par le processeur)
-Envois simultanés sur la même application
-Possibilité de choisir le fichier à partir du client

Source / Exemple :


Voir Zip, 2 projets, un serveur, un client

Codes Sources

A voir également

Ajouter un commentaire Commentaires
cs_Valentino Messages postés 81 Date d'inscription vendredi 19 juillet 2002 Statut Membre Dernière intervention 3 août 2010
26 mai 2008 à 12:19
Bonjour Yves,
Sympa mais peu d'interet pour une exploitation hors LAN... un utilisateur lambda ne s'aura pas faire du NAT sur son routeur (coté serveur).
Se genre d'outil est plus exploitable sous forme de page web upload/download.
cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010
27 mai 2008 à 20:42
Wé tu n'as pas tort, moi je sais faire ça que en Vb^^
cs_Valentino Messages postés 81 Date d'inscription vendredi 19 juillet 2002 Statut Membre Dernière intervention 3 août 2010
28 mai 2008 à 09:28
Sinon l'autre solution c'est que tu diffuse uniquemement le prog client et tu installe le programme serveur chez toi avec une gestion des ports un peu plus poussé (remote)... et voila un beau p'tit trojen ^_^

Bonne continuation Yves ;o)
cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010
28 mai 2008 à 13:59
Merci
cs_clowzer Messages postés 50 Date d'inscription dimanche 4 mai 2008 Statut Membre Dernière intervention 4 juillet 2013
9 avril 2009 à 13:39
salut a tou cet application je lé testé sou reseau elle marche magnifique mais elle marche sou internet ???????

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.