Erreur d'éxécution '40006': État de connexion ou de protocole erroné pour la tra

Résolu
Signaler
Messages postés
8
Date d'inscription
dimanche 9 avril 2006
Statut
Membre
Dernière intervention
18 octobre 2007
-
Messages postés
1
Date d'inscription
mercredi 22 novembre 2006
Statut
Membre
Dernière intervention
24 juillet 2007
-
Bonjour, voici mon problème:

J'ai ce petit bout de code dans ma source:

Private Sub Command1_click()
 Timer1.Enabled = True
End Sub

Private Sub Form1_load()
 i = 0
End Sub

Private Sub Timer1_timer() 'Timer1 a une intervalle de 1000, enabled:false
 i = i + 1
 Winsock1(i).Close
 Winsock1(i).Connect "xx.xx.xx.xx", xx
End Sub

Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Index = i
Winsock1(i).GetData dat
..d'autre code pas important ici
End Sub

Quand j'arrive pour tester mon programme, j'arrive à me connecter avec le Winsock1(1), mais je n'y arrive pas pour Winsock1(2). Quand je me connecte au serveur, je recois un paquet automatiquement (ce qui est normal).

La ligne en rouge ci-haut est en surbrillance et je recois l'erreur suivante (avec Winsock1(2).GetData dat):
Erreur d'éxécution '40006':
État de connexion ou de protocole erroné pour la transaction ou la requête requise

Comment dois-je régler mon problème?

Merci de votre aide,
Zappam

2 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
salut,
index = i ? bizarre çà.

bref, le multi-sockets est un peut particulier.
en fait, côté serveur, il faut utiliser un socket (disons le 0) rien que pour dispatcher sur les autres.
attention à dat (qui n'est pas déclaré).
pour des raisons évidentes de groupe de contrôles, ton buffer doit être un tableau(NOMDRE_DE_WINSOCKS)

et pour l'erreur précise, tout laisse à croire que le sock2 pas encore connecté lors de ta lecture de data.
++
PCPT   [AFCK]
Messages postés
1
Date d'inscription
mercredi 22 novembre 2006
Statut
Membre
Dernière intervention
24 juillet 2007

non pas comme ça !!!
il faut que tu declares ton buffer en declaration comme ça
par example
dim buffer(0 to 500) as string
en data arrival de ton winsock tu met comme ça
Index = i
Winsock1(i).GetData dat c ton erreur c ça index i -----------> error  il faut le i index c pas index = iwinsock(index).getdata buffer(index) avec le maximum des socket 500 àa veut dire winsock.ubound 500