Salut BozzoDodo
Les 4096 octets correspondent à la taille maxi du buffer de ce controle.
Mais, si ta machine est rapide (et qu'elle n'a rien d'autre à faire), il se peut que le winsock te renvoie quelques données alors qu'il en arrive encore d'autres.
Le problème réside donc dans le fait de savoir si toutes les données ont été envoyées ou s'il en reste encore + Si l'appli en face envoie deux données l'une derrière l'autre, les données se suivront côté réception, mais il ne te dira pas quand finit le premièr envoi et où commence le second.
Il va donbc falloir que tu t'invente une sorte de protocole pour donner des indications :
Par exemple (tu feras comme tu veux) :
- Dans ton projet, définis une variable globale :
Dim Données As String
- A chaque DataArrival du winsock, ajoute les données qui arrivent à ta variable :
.GetData Temp, vbString, bytesTotal
puis Données = Données & Temp
- Installe un Timer avec .Interval = 500 et dedans, tu vas faire l'analyse des infos que tu viens de recevoir.
- Supposons que, à chaque envoi, avant d'envoyer les données, tu ajoutes un texte de reconnaissance, suivi d'une valeur qui serait la longueur du texte que tu envoies :
.SendData "#Envoi texte#52#Le texte que tu veux ou même un fichier, soyons fous"
- A la réception, dans ton Timer, tu cherches quel est l'entête de l'envoi :
Dim Longueur As Long, TailleEnTete As Long
Select Case Split(Données, "#")(0)
Case "Envoi texte"
Longueur = Split(Données, "#")(1) ' récupère la longueur 52
TailleEntete = Len("Envoi texte") + Len(CStr(Longueur)) + 3
If (Len(Données) - TailleEntete) >= Longueur Then
' Ok, toutes les données sont arrivées : on extrait
LigneRecue = Mid(Données, TailleEntete, Longueur)
' Supprime ces données de Données
Données = Mid(Données, TailleEntete + Longueur + 1)
End If
Case "Envoi Fichier"
' Exactement la même technique ...
End Select
Après, tu peux facilement ajouter des commandes à ton protocole (en faisant attention à bien respecter les min maj des entêtes style "Envoi texte")
Vala
Jack
NB : Je ne répondrais pas aux messages privés