Faire pour recevoir envoyer tout les bytes

tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 - 11 mai 2011 à 20:43
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 12 mai 2011 à 21:24
Salut voila mon problème et que j’envoie des donnée et le nombre de bytes exemple égal a 15425 bytes le problème et que mon serveur recoie que exemple 8450 bytes comment je peut faire pour que mes bytes soit tous la donc les compter

7 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
11 mai 2011 à 21:12
Bonjour,

Comment fais-tu pour la réception ?
Car, je vois quelques possibilités :
- Tu n'attends pas assez
- Ton buffer de réception n'est pas vidé assez rapidement et sature
- Tu ferme la connexion trop rapidement après envoi

Mais sans plus d'information de ta part, il est impossible d'en dire plus.

Mon site
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
12 mai 2011 à 01:20
Salut

Et oui, comme je te l'ai déjà dit, il se peut que tu ne reçoives pas tout le contenu en un seul appel de DataArrival. Il faut donc mémoriser les données reçues et ne les traiter que lors du prochain appel, voire le suivant ... jusqu'à ce que les X bytes annoncés en tête de message soient arrivés.
C'est pour cela qu'il faut connaitre le nombre de Bytes (longueur de chaine) à recevoir avant que le flot de données n'arrive.
Tout ça se résout facilement avec des Left, Mid et autre Len.

Deuxième chose à laquelle il faut faire attention : Quand tu recevras la fin des données d'un premier fichier, il se peut que d'autres données suivent : celles caractérisant l'envoi d'un second fichier (avec la trame d'info que tu as prévu) --> Lors de la lecture des données du premier fichier, il faut faire attention à regarder qu'elles sont les données qui suivent ... s'il y en a

Tout ceci parce que :
- Le Winsock est un composant possédant un buffer (8ko)
- DataArrival se déclenchera quand des données sont reçues - quantité : entre 1o et 8ko, tout dépend de la vitesse d'arrivée des données, de la charge de la machine etc ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
12 mai 2011 à 09:14
Ok Merci pour vos information juste comme sa comment je peut faire pour dire justement au Dataarrival de prendre tout les bytes de mon fichier ? voici les source de base pour seul qui demande plus d'information

'coter serveur 
Dim wrd As String
Dim nom As String
Dim taille As String
Winsock(Index).GetData taille
Fichier = FreeFile
Open App.Path & "\Admin-2.rxdata" For Binary As #Fichier
Put #Fichier, , taille
Close #Fichier
End Sub


 
'coter client 
If Winsock1.State = sckConnected Then
Fichier = FreeFile
taille2 = FileLen(App.Path & "\Saves\Admin-2.rxdata")
taille = Space(taille2)
Open App.Path & "\Saves\Admin-2.rxdata" For Binary As #Fichier
    Get #Fichier, , taille
Close #Fichier
Winsock1.SendData taille

End If
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
12 mai 2011 à 13:20
Un des paramètres de l'évènement _DataArrival est la quantité de données disponible - Voir les options de .GetData.
A toi de les lire, sous la forme qu'il te plait, et de les stocker en attendant qu'elles soient complètes pour former ton fichier.

Le minimum serait que tu charges et analyse une source qui parle de transfert par Winsocks : tu verras tout de suite comment faire.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
12 mai 2011 à 14:18
Ok je vais essaye d’étudier une source pour voir comment ses donnée son envoyer et comment les recevoir
0
tonyledragon Messages postés 173 Date d'inscription lundi 2 mai 2011 Statut Membre Dernière intervention 13 décembre 2012 1
12 mai 2011 à 14:22
voila j'aimerasi savoir comment je peut avoir des donnée directeemnt a la palce de faire une rechercher voici le code qui lance la recherche
 With Dialogue
        .Flags = cdlOFNExplorer + cdlOFNFileMustExist + cdlOFNNoChangeDir
        .DialogTitle = App.Title & " - Choix du fichier"
        .Filter = "Tous les fichiers (*.*)|*.*"
        '.InitDir = app.Path
        .ShowOpen
        txtFichier.Text = .FileName
    End With
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
12 mai 2011 à 21:24
Question incompréhensible.
Ce code n'a rien à voir avec "avoir des donnée directeemnt a la palce de faire une rechercher"
Quel est ta question réelle ?
0
Rejoignez-nous