Dans le lien que je t'ai envoyé, c'est expliqué très clairement avec des exemples simple... Voici une partie du code que j'ai Copier-Coller de la source.
Pour faire un projet qui peut être connecté à plusieurs Winsock en même temps, faites-le avec 2 winsocks, l'un « Wck »
avec la propriété « Index » à 0 et l'autre « Serveur ».
Rajoutez la variable public (donc accessible de partout) « Nb », et initialisez la à 0 au form_load.
Selon ce qu'on vient de voir, faites en sorte (et ça paraît logique) que ce soit « Serveur » qui soit serveur donc qui écoute mais pour son évenement ConnectionRequest mettez :
§ Private Sub Serveur_ConnectionRequest(ByVal requestID As Long)
§ Nb=Nb+1
§ Load Wck(Nb)
§ Wck(Nb).Accept requestID
§ End Sub
Vous avez compris !!!
A chaque demande de connexion à votre appli, elle
charge un nouveau contrôle Winsock « Wck » qui va prendre la demande et donc se connecter a l'appli appelante : au final, si 25 ctrl cherchent à vous appelez, vous pourrez vous connecter aux 25 et communiquer avec les 25 ! Ou plus ! (ou moins aussi).
Le ctrl Winsock « Serveur » lui reste TOUJOURS A L'ECOUTE PRET A TRAITER LES EVENTUELLES DEMANDES.
Et pour faire propre, il faut pas oublier :
§ Private Sub Wck_Close(Index As Integer)
§ Unload Wck(Index)
§ If Wck.count=0 then Nb=0
§ End Sub
Ce qui permet de décharger de la mémoire les ctrl winsock auxquel leur correspondant ont lâché la communication, et qui donc ne servent plus.
Comment traiter différentes réceptions ou la gestion des ordres :
Souvent vos applis vont s'envoyer des infos, mais pas tjrs les mêmes : donc comment faire pour que le prog distingue s'il vient de recevoir le Pseudo du type ou bien un message qu'il vient d'envoyer pour afficher dans le chat ? Simple encore une fois !!!
Faites correspondre chaque type de données (je ne parle pas du type VB) à un caractère puis faites par exemple :
pour l'envoi d'un pseudo :
§ .senddata « P » & VarPseudo
pour l'envoi d'un msg :
§ .senddata « M » & VarMsg
et pour la réception, on distingue comme ça :
§ Dim data as string
§ Dim Ordre as string * 1
§ .getdata data
§ Ordre = left(data,1) 'récupère dans Ordre le 1er caractère
§ data = right(data,len(data)-1) 'retire ce 1er caractère de data
§ Select case Ordre 'faites ici différents usages des données
§ Case « P »
§ Pseudo = data
§ Case « M »
§ Text1.text = data
§ End Select
Walla
