begin process at 2012 02 14 08:01:31
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > TRANSFERT DE FICHIERS VIA WINSOCK-CA MARCHE A 100%.

TRANSFERT DE FICHIERS VIA WINSOCK-CA MARCHE A 100%.


 Information sur la source

Note :
5,5 / 10 - par 4 personnes
5,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Niveau :Initié Date de création :03/04/2005 Date de mise à jour :04/04/2005 15:42:10 Vu / téléchargé :6 136 / 1 539

Auteur : lektrosonic

Ecrire un message privé
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

 Description

Voici encore un code qui permet d'envoyer des fichiers via Winsock. Il se differencit des autres parceque il est sous forme d une fonction, et donc qui peut etre adapte a n'importe quel code.

Source

  • Dim CheckFileAva As Boolean
  • Public Sub Senddata(FileName As String, WinsockName As Winsock)
  • Dim temp As String
  • Dim BlockSize As Long
  • Open FileName For Binary Access Read As #1
  • BlockSize = 4096
  • Do While Not EOF(1)
  • temp = Space$(BlockSize)
  • Get 1, , temp
  • WinsockName.Senddata temp
  • DoEvents
  • Loop
  • WinsockName.Senddata "end"
  • Close #1
  • End Sub
  • Public Sub Receivedata(WinsockName As Winsock, FileNametoSave As String)
  • Dim temp As String
  • Dim data As String
  • WinsockName.GetData data
  • If CheckFileAva = False Then
  • Open FileNametoSave For Binary Access Write As #2
  • CheckFileAva = True
  • ElseIf CheckFileAva = True Then
  • DoEvents
  • End If
  • temp = data
  • If temp = "end" Then
  • Close #2
  • CheckFileAva = False
  • MsgBox "Transfer Success"
  • Else
  • Put 2, , temp
  • End If
  • End Sub
Dim CheckFileAva As Boolean

Public Sub Senddata(FileName As String, WinsockName As Winsock)
Dim temp As String
Dim BlockSize As Long
Open FileName For Binary Access Read As #1
BlockSize = 4096
Do While Not EOF(1)
temp = Space$(BlockSize)
Get 1, , temp
WinsockName.Senddata temp
DoEvents
Loop
WinsockName.Senddata "end"
Close #1
End Sub

Public Sub Receivedata(WinsockName As Winsock, FileNametoSave As String)
Dim temp As String
Dim data As String
WinsockName.GetData data
If CheckFileAva = False Then
Open FileNametoSave For Binary Access Write As #2
CheckFileAva = True
ElseIf CheckFileAva = True Then
DoEvents
End If
temp = data
If temp = "end" Then
Close #2
CheckFileAva = False
MsgBox "Transfer Success"
Else
Put 2, , temp
End If
End Sub



 Conclusion

Voici les deux fonctions pour le trasnfert de fichiers via Winsock. Dans le .zip, il y a les deux applications Client et Server. Le Client envoie n'importe quel fichier au Server avec succes. Le transfert des fichiers est construit a base de ces deux fonctions contenues dans le module "File Transfert" du .zip. (Le Client envoi seulement, donc il utilise que la fonction d'envoi, et inversement pour le Server). Il reste juste a regler l'envoi du nom du fichier + son extension. En cas de questions, mon mail: greeksonic@hotmail.com
I Ellada pire to Euro malakes!

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

04 avril 2005 15:42:10 :
Ajout des applications, Client & Server.

 Sources du même auteur

CONTROLER A DISTANCE UNE LISTBOX AVEC WINSOCK.
Source avec Zip TIMER ET PROGESSBAR

 Sources de la même categorie

Source avec Zip Source avec une capture GESTIONNAIRE DE TÉLÉCHARGEMENT, AVEC REPRISE ET MULTITHREADI... par Madx23
Source avec Zip Source avec une capture CONVERTIR DU TEXTE RTF EN CODE HTML ET VICE-VERSA par vicosta
Source avec Zip Source avec une capture DICTIONAIRE TEXT/AUDIO/VISUELLE ANGLAIS AVEC WEBBROWSER CONT... par majnounmajda
Source avec Zip Source .NET (Dotnet) NSLOOKUP EN VB.NET OU COMMENT FAIRE UNE REQÛETE DNS EN PRÉCI... par ShareVB
Source avec Zip Source avec une capture MINI SEVEUR HTTP AVEC INTERFACE GRAPHIQUE ET IMPLÉMENTATIONS... par lemout

Commentaires et avis

Commentaire de NICK123 le 04/04/2005 11:13:17

hi sonic,
pourquoi pas partager votre sources avec tous le monde , votre E-mail ne sert à rien.

ici nos sources sont partagées.

si mieux de mettre au titre A VENDRE.

lol.

Commentaire de lektrosonic le 04/04/2005 15:47:25

Voila j'ai rajoute les sources des deux applications.

Commentaire de NICK123 le 04/04/2005 16:29:57

MERCI
:-)

Commentaire de meedo le 04/04/2005 20:33:37

slt lektrosonic
merci pour le rajout de ta source
c vraiment genial
a la prochaine

Commentaire de Pingouin le 04/04/2005 20:36:42

A mon avis ce qui poser probleme d'habitude ce n'est pas vraiment l'envoi du fichier en lui m^m parce que ouvrir un fichier, le lire et passer le bloc lu en paramètre de senddata ca ca va encore, de meme pour la réception : écrire un fichier bon ... Ce qui est plus diffcile c'est le code réseau en lui même , établir la connexion et s'assurer qu'elle est bonne, transmettre le fichier, et le mieux est encore de s'assurer que le transfert n'a pas altéré le fichier (c'est ce que je m'attendais a trouver).
Je suis donc déçu, en effet ton code est adaptable, mais bon la lecture/écriture des fichiers n'intéressent que moyennement les gens qui développent des appli réseaux...(a mon humble avis)
@+

Pingouin

Commentaire de lektrosonic le 04/04/2005 21:25:48

Alors d'apres toi, queske je doi ameliorer?

Commentaire de e_NeX le 04/04/2005 23:17:22

salut, ca a l'air bien ton bout de code mais 2 problemes majeurs, meme critiques:

1_ Chaques fois que ton winsock recois des données, il réinitialise ( il me semble que ce mot est approprié mais corrigez moi si je m'exprime mal) les variables Temp,data, et blocksize

2_ ton bout de code utilise 100% de CPU!

voici ce que je viens de ramarquer. je vais donc essayer de remedier au 2eme probleme mais je ne promet rien!
sinon bonne continuation!

Commentaire de ennixo le 05/04/2005 07:01:59

il est important de souligner que le DoEvents pour séparer les données du fichier et la fin du transfert "end" ça fonctionne en local (soit sur son propre pc soit dans un réseau local) mais à "grande" distance, en WAN (sur le net quoi), avec tous les aléas et les ralentissements et collisions divers qu'il peut y avoir il est possible qu'à la fin le "end" n'arrive pas seul mais collé au paquet qui le précède.
celà empecherait de savoir que c'est la fin et dans le cas d'un enchainement de plusieurs transferts de fichiers ça provoquerait une erreur.

mon conseil : un grand nombre de solutions peuvent palier à ce problème, en voici 2 :
la premiere : fermer la connexion coté senddata au lieu d'envoyer "end". le défaut c'est qu'en cas de coupure de la connexion on ne pourra pas vérifier si le fichier a bien été reçu ou pas.
la seconde : envoyer une commande avant l'envoi qui indique la taille du fichier (et pourquoi pas le nom du fichier). ainsi en comparant la taille du fichier reçu avec la taille envoyée on saura tout de suite si le fichier a bien été reçu =)

voilà en espérant que ça serve...

Commentaire de Pingouin le 05/04/2005 20:09:50

Déjà rajouter tout ca ce ne serait pas mal. Maintenant le top a mon avis et pour pouvoir mériter le titre de ta source :Þ ce serait de pouvoir vérifier l'intégrité de chaque paquet...La je te souhaite bien du plaisir...Une meilleure gestion de l'écriture dans le fichier (a l'octet en fait) permettrait par exemple au récepteur de redemander un paquet mal transmis ou jms recu...
Voila si tu as du courage pour améliorer tout ca...
@+

Pingouin

Commentaire de pico160 le 07/05/2005 09:24:24

c'est tres bon  !!!
vous etes genie!!!
bon courage !!
*****fadhel *******

Commentaire de moimadmax le 05/12/2006 16:51:41

J'ai testé ton code et ca ne fonctionne pas vraiment, car en fait il envoie un multiple de 4096 octets, car dans le dernier paquet meme si il reste 2 octets il en envoie 4096. Donc les fichiers ne font pas la meme taille. pour certains type de fichier ou la taille est dans l'entete (wav par ex) ca peut etre genant.

Commentaire de PAT9SAB le 12/10/2009 18:05:18

bonjour peut etre pourais vous m'aider
j'ai fais une appli pour commander une carte relais, maintenant je voudrais la commander d'un autre pc donc je pensais integré un serveur a l'aplication de la carte  et faire un client pour l'autre pc mais je ne sais pas si c'est la bonne solution et comment mi prendre (debutant en vb encore plus en reseaux ) merci pour l'aide

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales