BozzoDodo
Messages postés185Date d'inscriptionvendredi 20 décembre 2002StatutMembreDernière intervention10 janvier 2008
-
19 juin 2005 à 18:20
ScarHand
Messages postés12Date d'inscriptionmardi 1 février 2005StatutMembreDernière intervention 1 septembre 2005
-
19 juin 2005 à 23:33
Bonjour,
J'aimerai savoir quelle est la taille maximale des paquets que l'on
peut envoyer (par winsock.senddata). Si le paquet est plus gros que
cette taille maximale que se passe t'il? Est-il morcelé ou perdu?
Enfin, si j'envoie rapidement plusieurs paquets de taille maximale, que
se passe t'il?
cs_Stephane
Messages postés550Date d'inscriptionvendredi 5 janvier 2001StatutMembreDernière intervention23 septembre 2006 19 juin 2005 à 18:44
salut
en ce qui concerne la taille, je sais pas si ca depend des ordis, mais
moi la réception était limité a 8192 octet, au dela, l'evenement
get_data (je sais plus s'il sappelle comme ca :p) était re executé,
avec les données suivantes.
je crois que si tu en envois trop rapidement, ca les met a la suite, mais je suis pas sur
ScarHand
Messages postés12Date d'inscriptionmardi 1 février 2005StatutMembreDernière intervention 1 septembre 2005 19 juin 2005 à 23:33
Salut,
Je connais pas la limite mais je sais que quand tu envoies trop d'un coup, il fait un premier getdata avec les 8192 premiers octets (en reprenant l'info de Stéphane), peu importe où la chaîne de caractères est coupée et dès qu'il l'a reçu referra un getdata avec les 8192 prochains octets.
Je ne sais pas ce que tu as l'intention d'envoyer et de recevoir mais ce que moi je fais c'est que je trouve un moyen pour limiter le transfert à un minimum.
Si c'est pour transférer un fichier de plus de 8 ko ou un chaîne de caractères aussi longue,c'est pas grave. Il suffira qu'à chaque getdata de traiter la donnée avant que le getdata suivant s'exécute.
Par contre si tu veux envoyer plein de données différentes en une fois, je te conseille de les séparer pas des caractères non-affichable :
Dim Data1 As String
WinSock.SendData Data1 & Chr(1) 'chr(1) étant un carré (non-affichable)
Private Sub WS_DataArrival(ByVal bytesTotal As Long)
Dim strdata, Data2 As String
WinSock.GetData strdata, vbString
If InStr(1, strdata, Chr(i)) > 0 Then
Data2 = Left(strdata, InStr(1, strdata, Chr(1)) - 1) 'Data2 vaudra Data1 sans le carré
End If
End Sub
Enfin, c'est comme ça que je fais pour transférer des données entre deux winsock. Chacun sa méthode...
Evidemment, il faudra jouer avec les InStr et InStrRev si tu mets plusieurs données avant et après des caractères non-affichables.
ScarHand
PS : Extrait de MSDN : "Utilisez la propriété BytesReceived pour vérifier, à tout moment, le volume des données disponibles."