VB_Winsock: 1 serveur , x Clients

Résolu
Priato Messages postés 2 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 20 juillet 2005 - 20 juil. 2005 à 10:40
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 20 juil. 2005 à 14:01
J'utilise Winsock sous VB6, j'ais crée un serveur et un client mais je
cherche a gérer plusieurs clients sur ce serveur. J'ais regardé sur
plusieurs code sources, en principe on utilise un index comme pour un
tableau or quand je le passe en parametre un message d'erreur
m'indique: " La déclaration de la procédure ne correspond pas à la
description de l'évenement..."

Voici mon code source du serveur:

Option Explicit



Private Sub BResetListe_Click()

'On efface la liste

Liste.Clear

End Sub



Private Sub Form_Load()

Sock.Close

'On défini au chargement de la feuille un port d'écoute

Sock.LocalPort = 180

'Et on écoute

Sock.Listen

End Sub



Private Sub Sock_Close()

'Quand un client se déconnecte on ferme proprement le Sock

Sock.Close

'On affiche dans la liste la déco d'un client

Liste.AddItem "Client déconnecté"

'Et on remet en écoute

Sock.Listen

End Sub



Private Sub Sock_ConnectionRequest(ByVal requestID As Long)

Sock.Close

'On affiche dans la liste un message pour bien prendre en compte la connection

Liste.AddItem "Connection client"

Sock.Accept requestID

End Sub

3 réponses

Priato Messages postés 2 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 20 juillet 2005
20 juil. 2005 à 13:21
J'ai trouvé mon problème il s'agissait de pouvoir instancier mon
Winsock et de pouvoir l'indexer, or pour cela il faut initialiser
l'index du winsock à 0 pour pouvoir l'utiliser par la suite dans les
procédures. Mon programme fonctionne, n'hésitez a apporter des
critiques si vous en avez, je suis en formation et donc je le prendrais
bien, merci à toi pcpt de t'être penché sur ma question.

voici le code coté serveur:



Option Explicit

Dim indexSock As Integer



Private Sub Form_Load()

Sock(indexSock).Close

'On défini au chargement de la feuille un port d'écoute

Sock(indexSock).LocalPort = 180

'Et on écoute

Sock(indexSock).Listen

End Sub



Private Sub Sock_Close(index As Integer)

'Quand un client se déconnecte on ferme proprement le Sock

Sock(index).Close

'On décharge le socket

Unload Sock(index)

'On affiche dans la liste la déco d'un client

Liste.AddItem "Client " & index & " déconnecté"

End Sub



Private Sub Sock_ConnectionRequest(index As Integer, ByVal requestID As Long)

indexSock = indexSock + 1

Load Sock(indexSock)

'On affiche dans la liste un message pour bien prendre en compte la connection

Liste.AddItem "Connection client " & indexSock

Sock(indexSock).Accept requestID

End Sub
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
20 juil. 2005 à 12:04
tel quel, tu n'autorises pas plusieurs clients
ensuite, il est possible que ton port 180 soit déjà utilisé.

et le message "La déclaration de la procédure ne correspond pas à la description de l'évenement..."
doit concerner un autre problème non-lié
par exemple
Private Sub Command1_Click(Button)

ton erreur est celle d'un procédure d'un composant qui aurait été modifié.

PCPT
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
20 juil. 2005 à 14:01
n'oublie pas de fermer le nouveau sock avant ;)

Sock(indexSock).Close
Sock(indexSock).Accept requestID

PCPT
0
Rejoignez-nous