Transfert de fichiers entre 2 pc distants

Soyez le premier à donner votre avis sur cette source.

Vue 28 429 fois - Téléchargée 3 799 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

Tout d'abord, chapeau pour cette source. Je reste persuadé que ça me sera bien utile, cependant je ne reçois rien. Je vois pourtant que tout semble fonctionner.
J'aurai juste voulu savoir quel est le dossier de destination du fichier ?
En tous cas, bravo !
Messages postés
4
Date d'inscription
vendredi 28 octobre 2011
Statut
Membre
Dernière intervention
24 octobre 2013

bonjour
se programme fonctionne très bien en local mes pas sur une connexion distant pourtant j'ai bien configurer mon routeur au port voulu mes sans succès ?
Messages postés
1
Date d'inscription
mardi 7 mars 2006
Statut
Membre
Dernière intervention
13 mars 2010

PARFAIT
Franchement si j'avais le temps, je reprendrais avec plaisir cette application, ça fait 1h30 que je cherches une application capable de faire ça, ce qui prouve bien que la place est libre.

J'ai un serveur de jeux sur un serveur distant et ce petit programme permet de s'envoyer un fichier rapidement et simplement sur ça machine pour dev et surtout sans passé 3 plombe à configurer, on utilise un port bidon, libre sur le moment et hop ça roule.

Bref, à ce que j'ai vu, il n'y a pas beaucoup de code mais bravo, fallait le faire ^^

(le fichier s'enregistre à coté du programme client)
Messages postés
4
Date d'inscription
dimanche 5 juillet 2009
Statut
Membre
Dernière intervention
5 juillet 2009

excelent
Messages postés
1
Date d'inscription
dimanche 8 mars 2009
Statut
Membre
Dernière intervention
29 mai 2009

Bonjour à tous
J'adore ce programme, il marche super bien
Le seul petit problème c'est que je ne sais pas comment enregistrer le fichier reçus et sa me pose problème
Je ne suis pas très avancer en vb et si quelqu'un pouvais me dire comment l'enregistrer ou où le fichier est enregistrer ce serais sympa
Merci d'avance.
Afficher les 11 commentaires

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.