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

Messages postés
8
Date d'inscription
dimanche 9 avril 2006
Dernière intervention
18 octobre 2007
- - Dernière réponse : 007antar21
Messages postés
1
Date d'inscription
mercredi 22 novembre 2006
Dernière intervention
24 juillet 2007
- 24 juil. 2007 à 18:02
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
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
3
Merci
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]

Merci PCPT 3

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

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de PCPT
Messages postés
1
Date d'inscription
mercredi 22 novembre 2006
Dernière intervention
24 juillet 2007
0
Merci
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
Commenter la réponse de 007antar21

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.