Socket : problème de latence entre la réception des données et l'écriture dans u [Résolu]

Signaler
Messages postés
88
Date d'inscription
mardi 19 avril 2005
Statut
Membre
Dernière intervention
10 août 2007
-
Messages postés
88
Date d'inscription
mardi 19 avril 2005
Statut
Membre
Dernière intervention
10 août 2007
-
Salut,

Je suis en train de développer un client ftp de base afin de manipuler les sockets en .net. J'ai un problème : quand je rapatri un .zip, il faut que je place un temps d'attente entre la réception des données de la socket et l'écriture des données dans un fichier. Comment faire pour régler ce problème ? Si vous avez des idées, elles sont bonnes à prendre ;-)

Merci d'avance,

Flo.

PS : Voici le code qui pose problème :



Public
Overloads
Function Reception()



Dim code
As
Integer = -1



Dim output(1024)
As
Byte



Dim rep
As
String



Dim i
As
Integer = 0



Dim monStreamWriter
As BinaryWriter =
New BinaryWriter(File.Create(".\donnees\test.zip"))



While (code <> 0)



If (
Me.Connected())
Then


code =
Me.ReceiveFrom(output,
Me.iep)



Else


code = 0



End
If



If (code <> 0)
Then


monStreamWriter.Write(output)



'il faut attendre une durée variable selon la taille du fichier en millisecondes avant de receptionner la suite ! POURQUOI ? C'est pas très pratique...


System.Threading.Thread.Sleep(100)



End
If



End
While


monStreamWriter.Close()



End
Function

2 réponses

Messages postés
88
Date d'inscription
mardi 19 avril 2005
Statut
Membre
Dernière intervention
10 août 2007

J'ai réglé mon problème ! Il suffit d'utiliser un array.copy() et d'attendre la fin de la réception. Alors, on peut enfin écrire le fichier.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 82 internautes nous ont dit merci ce mois-ci

Messages postés
11
Date d'inscription
mercredi 24 août 2005
Statut
Membre
Dernière intervention
23 janvier 2006

Salut,

Si je comprends bien ton problème, tu lis, tu attends, tu lis, tu attends, etc etc...

C'est normal comme comportement. Quand tu utilises des sockets, tu utilises le réseau, et donc, le fichier qui transite est coupé en morceau avant d'être envoyé, ensuite ton système reconstruit les morceaux dans l'order et te les donnes dès qu'ils sont dispo.

Pour corriger ce pb, tu dois utiliser l'event fournis par le socket qui te préviens qu'un autre bout du fichier est arrivé.

Je ne connais pas le .Net, mais j'ai déjà bosser sur des sockets en VB et en C, et le fonctionnement des sockets et le même.

J'éspère que c'est clair,
Salut