ENVOI DE FICHIERS DE TOUTES TAILLES AVEC WINSOCK

cs_pluplu Messages postés 615 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 4 juillet 2012 - 10 oct. 2003 à 12:17
djgab21 Messages postés 66 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 19 mai 2011 - 13 nov. 2010 à 16:13
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/16972-envoi-de-fichiers-de-toutes-tailles-avec-winsock

djgab21 Messages postés 66 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 19 mai 2011
13 nov. 2010 à 16:13
Salut,
très bonne source, merci, elle va m'être très utile.
10/10
kakenette Messages postés 218 Date d'inscription dimanche 1 mai 2005 Statut Membre Dernière intervention 15 novembre 2009 1
17 févr. 2008 à 19:26
Je pense que de toute manière la taille du paquet ne va pas changer la vitesse de transfert mais just augmenter en mémoire le transfert.
jaafar123456 Messages postés 2 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 1 juin 2007
19 nov. 2005 à 17:34
salut,

Arondis = Left(FileLen(NomFichier) / PacketSize, InStr(FileLen(NomFichier) / PacketSize, ",") - 1)
If Arondis <> 0 Then
NbrPackets = Arondis
Else
NbrPackets = FileLen(NomFichier) / PacketSize
End If

c'est bien la partie du code qui précise le Nbr de packets?
j'aimerai t'ajouter 2 truc qui te serviront par la suite:
primo : x = A \ B ' x reçoi le resultat de la division entiere de A sur B.
Secondo : R = A Mod B ' R reçoi le reste de la division de A sur B.

Bonne continuation.
Chaque instant... est une chance pour changer sa vie!
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
20 sept. 2005 à 21:58
Pour infos je fait un prog sur cette source en ce moment avec un envoie par IP pour une cliente. Je déposerais tout ça ici mais je préviens à l'avance que cette source ne seras pas différente, hors mis l'interface graphique les fonction pour faciliter l'envoie et le morceau de code d'Optitech bien sur ! Merci à toi

@+ et bonne continuation à tt les développeurs !

PS: je monte ma boite de dépannage informatique à domicile et si il ya des gens qui ont déjà bossé ds ce type de boulot je suis ouvert a tt les conseils: mayzz03@hotmail.com
Optitech Messages postés 134 Date d'inscription samedi 19 octobre 2002 Statut Membre Dernière intervention 3 janvier 2009
16 juin 2005 à 15:41
Salut !

Mon application avence ! Comme promit voila le bout de code que j'ai modifé pour le calcul des paquets ! Le voila :

C'est un function

Function CalculNbPaquet(taillefichier, taillepaquet) As Double

Dim reste As Integer 'Déclaration de la varialbe
Dim Nbpaquet As Double ' Déclaration d ela varialbe

reste = taillefichier Mod taillepaquet 'Calcul du reste grâce à Mod (division ecludiaine) qui retorune le reste

Nbpaquet = (taillefichier - reste) / taillepaquet 'On calucle le nombre de paquets

If reste > 0 Then Nbpaquet = Nbpaquet + 1 'Si reste n'était pas nul on rajoute 1 au nombre de paquets

CalculNbPaquet = Nbpaquet 'On retorune le nombre de paquets

End Function

Voila maintment la cod epour appelr cette fonction :

msgbox CalculNbPaquet(TAILLE DU FICHER EN OCTET, TAILLE DES PAQUETS EN OCTET)

Voila j'espère que ce morceau de code va t'aider à amélioré ta source !

Bonne programmtion à tous

@++

Optitech ^^
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
18 avril 2005 à 23:17
Petite apparition pour dire MERCI, MERCI, MERCI. lol
Ca fait plaisir de voir qu' après tout ce temps la note n'a pas baissé.
Optitech Messages postés 134 Date d'inscription samedi 19 octobre 2002 Statut Membre Dernière intervention 3 janvier 2009
4 avril 2005 à 16:22
Salut,

C'est une superbe source que tu as fait ! Qu'une seulle chose à dire : Chapeau ! J'ai modifier le morceau de code qui permet de calculer le nombre de paquet. Je peut pas te fourmir ce que j'ai fait pour l'instant (Oui je suis à mon lycée et j'ai pas mes sources). Pour l'instant j'essays de faire un programme, a partir du tien qui fait serveur et client à la fois, mais pour l'instant je n'y arrive pas.
zeunz Messages postés 200 Date d'inscription jeudi 26 février 2004 Statut Membre Dernière intervention 30 juin 2008
16 janv. 2005 à 22:50
quoi qu'il en soit, merci pr tya source. elle fonctionne tres bien.
salutations
Chipsounet Messages postés 2 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 8 septembre 2004
8 sept. 2004 à 14:55
ouh là, avec quoi il s'ouvre? Je ne parvien pas à l'ouvrir dans vb6

sinon, comment exploiter ceci ?

http://www.vbfrance.com/zipview.aspx?ID=16972&f=Envoi+de+fichier+avec+winsock%2fClient%2fFrmMain.frm

(oui, question de noob, désolé :) )
Scalpweb Messages postés 1467 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 5 mai 2010 4
5 juin 2004 à 22:31
Super, pour une première source ! Rien à dire, 10 ! Moi aussi, je veux travailler sur un truc d'échange de fichiers (mais pas vraiment p2p... Enfin, du même style,mais liéer à la base de donnée d'un site web). Je vais técrire un mail pour en savoir plus sur ton prog à toi.
@+, et bonne prog, scalpweb
CyberFlash Messages postés 38 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 31 mai 2004
31 mai 2004 à 15:58
Salut Mayazz, J'ai la solution au problème.
rappelle du problème:
Le fichier de destination n'est pas toujours de la même taille que l'original.

Cause: Le prog envoi un packet en trop

Solution:
La boucle pour l'envoi des packets est ainsi:

For x = 1 To NbrPackets

Si maintenant la variable NbrPackets possède la valeur 18.84, la fonction For va l'arrondire à 19. Donc il va envoyé 19 packet au lieu de 18.84. Il faut donc prendre uniquement la partie entière de la valeur de NbrPacket.
Ce qui donne:

NbrPackets2 = Fix(NbrPackets)
For x = 1 To NbrPackets2

Ainsi si la valeur de NbrPacket est de 18.84, la boucle ne verra que 18. Et c'est ce qu'il faut car le prog va ainsi envoyé 18 packet. Il manque encore 0.84 packet qui seront envoyé plus bas dans le prog

Et voilà Maintenant plus de prob. Tous les fichier fonctionnent.
Je suis d'ailleurs étonné que personne n'a remarqué cela
CyberFlash Messages postés 38 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 31 mai 2004
31 mai 2004 à 15:35
Je tiens encore à préciser que le problème apparaît sporadiquement
cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007
31 mai 2004 à 15:15
On dit des bytes, sinon sa portes à confusion ;)
CyberFlash Messages postés 38 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 31 mai 2004
31 mai 2004 à 15:01
Salut Mayazz, t'as source est vraiment super. Elle m'a bien dépannée. J'ai juste un p'tit prob que je n'arrive pas a comprendre.

Lorsque j'envoi un fichier, le fichier de destination ne se renomme pas et reste en *.tmp. Dans le code on peux voir que le prog détecte la fin du fichier lorsque le nombre de bite reçu est égale à la taille du fichier et c'est a ce moment qu'il renomme le fichier. Seulement voilà, chez moi le fichier de destination est toujours plus grand de quelque bite que l'original . Je ne comprend vraiment pas d'où vienne ces bites.
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
26 avril 2004 à 20:43
Ben heu... en fait on ne doit pas changé la taille pdt l'envoi du fichier
voila pk (le combo pr la taille devrais être looked ou disabled durant l'envoi)

De plus il ne faut pas envoyé des paquet supperieur a 8192 octets (taille maximum imposé par un socket).

Sinon j'ai remarqué un bug ds ce prog, mais c'est vraiment un bug illogique !

En fait je me suis apperçu que durant l'envoi d' un fichier (600Mo ou +), le client peu avoir fini son envoi avant que le serveur receptionne le fichier (le posaluturcentage d'envois sur le serveur n'est pas le même que celui du client) ce qui ne devrais pas arrivé car le client envoi le paquet suivant que lors ce que le serveur à confirmé la réception du paquet en cour.

si qq1 a pigé le truk...

bonne prog a ts !
e_NeX Messages postés 104 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 30 novembre 2009
9 avril 2004 à 16:28
Salut Mayazz, Tout d'abor, je tiens a te feliciter pour ta premiere source qui est vraiment bien detaille, explique et instructive mais j'ai un petit probeme: j'ai modifie un truc:

tu peux changer la taille des paquets durant l'envoi et quand la taille est trop grosse hebin ca arrete tout simplement d'envoyer le fichier

et meme si on la change pas et que c'est trop gros ca marche plus pk?

ca serait cool que tu remedie ce petit probleme!!!
BumpMANN Messages postés 330 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 26 janvier 2009
13 févr. 2004 à 22:16
Bravo pour cette source ;) voila une bonne source de vbfrance!
ca mérite pas moins de 10! ca va me servir ;)
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
2 févr. 2004 à 21:42
merci thierrydelpine

Pour les améliorations j' y avais pensé mais c'est juste une source et non un prog, je devais justement faire un prog de ce type(p2p) mais bon...

En tout cas si tu fais ce prog ca serais sympas de mettre la source ici et de me mettre le lien plus bas ;)

t' chao ++ et bonne prog tout le monde !!!
thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
30 janv. 2004 à 17:46
Tres bonne source, fonctionne tres bien, je l'ai testé avec un fichier de 2.1 Go.

petite amelioration : au lieu de copier le .tmp en l'extension reel du fichier puis de supprimer le .tmp pourquoi ne pas juste renommer le fichier cela gagnerai du temps a la fin du telechargement sur les gros fichiers.

grosse amelioration : comme on transfert des blocs, ce serai de compter les blocs deja recu et en cas de plantage ou de perte de connexion, de reprendre le telechargement ou il en était mais pas depuis le debut. je vais essayer.

en tout cas ce source est tres bien je vais l'ameliorer, pour des besoins perso, par un cryptage des donnees qui transitent car je souhaite passer par internet.le but est dans faire un pseudo per to per perso pour des echanges de photos de famille ou films familliales dans le cercle de la famille ou des amis.
je mettrai aussi l'echange de fichiers dans les deux sens.
reste pour moi a trouver du temps.

en tout cas BRAVO, cela vaut la note deja attribuée 10/10, et merci pour le source.
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
16 déc. 2003 à 17:00
bien encore merci pour tous ces commentaires positifs =)
cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007
16 déc. 2003 à 10:15
C'est très bien comme source :-) j'adore trop, sa va surement m'etre utile pour un projet si je me décide de le faire un jour ! un chti 10 car j'ai pas trouvé de bugs et que sa fonctionne impecable
zikoasm Messages postés 15 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 25 juin 2005
28 nov. 2003 à 21:50
tu as fais du bon travail mayzz et je m'excuse pour pluplu la prochaine fois je ferais mieux
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
16 nov. 2003 à 15:33
oui c'est sur mais cela revient au même de toute façon, l' important c'est que l'on puissent evnvoyer des fichier de plus de 8k (Dieu merci !)
cs_BeCaSiNe Messages postés 80 Date d'inscription dimanche 23 février 2003 Statut Membre Dernière intervention 16 juin 2008
15 nov. 2003 à 16:56
Ok Merci beaucoup C'est dommage car 8 k c'est pas beaucoup !!
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
15 nov. 2003 à 16:55
Ben pour répondre a ta question beCaSiNe je te dirais tout simplement que non. Car la taille maximum d' envoi avec winsock est de 8192 octets c'est d'ailleur pour ceci que l' on parle de paquets, d' ou l' obligation de scinder le fichier en plusieurs parties. On peut tout aussi bien envoyé le fichier en une seul fois mais dans ce cas préci winsock le découpera lui même, et puis quant on à un fichier de la taille d' 1Go ou plus il est un peut dur de le mettre en mémoire dans une variable sans risquer de planter le pc.
cs_BeCaSiNe Messages postés 80 Date d'inscription dimanche 23 février 2003 Statut Membre Dernière intervention 16 juin 2008
15 nov. 2003 à 16:25
Est ce possible d'augmenter la tailles des paquets ???? Car 8 K c'est pas beaucoup !!!!!
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
18 oct. 2003 à 02:51
merci neocracker,

Ca fait plaisir d’avoir de bons commentaires, d’autant plus que c'est ma première source ici.

En ce qui concerne son utilisation dans ton prog, no problème, si j’ai déposé cette source ici, c'est pour que tout le monde puisse en tirer profit.

Je suis assez intrigué par ton idée de prog p2p car comme je l’ai dis plus haut, je fais un prog en ce moment, du même genre et si ça te dis, ont pourrait prendre contact et échangé nos idées...
neocracker Messages postés 35 Date d'inscription vendredi 7 février 2003 Statut Membre Dernière intervention 20 février 2009
17 oct. 2003 à 21:45
Salut , ta source est super. j'aimerais savoir si ca te gene que je l'utilise dans le cadre d'un P2P de faible envergure ( pas un truc du genre kazaa ou e-Donkey)
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
11 oct. 2003 à 23:27
Heu... nan pluplu, du tout !

Rien à voir, cette source te permet d'envoyer des fichiers texte avec winsock, la mienne permet d' envoyer n' importe quel type de fichier, sans aucune limite de taille.

De plus les méthodes d'envoi ne sont carément differentes, je ne vois pas du tout en quoi ma source ressemble a celle de zikoasm, mis à par le fait que ce soit un envoi de fichier avec winsock et qu' il y a un client et un serveur...

Par contre si tu trouve une source similaire à la mienne je veu bien...
cs_pluplu Messages postés 615 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 4 juillet 2012
11 oct. 2003 à 10:09
vas voir cette source la ressemblance est étrange non !!

http://www.vbfrance.com/code.aspx?ID=16882
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
11 oct. 2003 à 03:44
Tu peux me donner le lien de cette source s'il te plaît et je te dirais ça pluplu :)

Il est vrai qu’il y a des méthodes dans cette source qui sont tiré d’autres sources de ce site, car je viens ici dans le but d’accroître mes connaissances en Vb et c’est même ici, que j’ai appris à me servir de winsock (grâce au tutorial de celiphane)

Avec les sources de tout le monde, on apprend beaucoup, mais ce qui compte, je crois quant on dépose une source c'est que le résultat final ne soit pas dans une source déjà présente sur le site et comme je le dis plus haut, ce bout de code fait partie d’un prog que je suis en train de faire avec un ami, je l’ai déposé car je n’ai pas trouvé de source sur vbfrance qui permette avec winsock d’envoyer des fichiers plus gros que 30Mo (Je ne dis pas qu'il n’y en a pas, mais je n’en ai pas trouvé) donc je me suis dis que si cette source n’existe pas ici, alors la mienne pourrait servir à quelques-uns uns.
D’ailleurs elle est un peu borderlique je l’avoue, c'est juste pour montrer la méthode d’envoi c'est tout. Le reste (l’interface etc..) Je l'ai fait vite fais histoire de ne pas balancer une source sans zip. Par ailleurs, si vous trouvez d’ autres sources pour envoyer des gros fichiers avec winsock (gros fichier = sans limite de taille pour moi ) ce serais sympa de me laisser les liens.

++ Mayzz
cs_pluplu Messages postés 615 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 4 juillet 2012
10 oct. 2003 à 12:17
Eh bien sure ta source n'a rien avoir avec celle de "Zikoasm" !!??
Rejoignez-nous