Transfert de port avec winsock

mr_schmit - 26 févr. 2001 à 20:56
emnabenslim Messages postés 4 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 4 avril 2008 - 17 mars 2008 à 12:18
Salut,

Je cherche à dévellopper un chat utilisant winsock (comme beaucoup) mais winsock ne gere qu'un seul client.
Je suppose qu'il faudrait transférer les autres clients vers d'autres port, et ainsi avoir autant de port utilisées que de clients connecters.

Quelqu'un peut il me donner quelques sources pour faire ça (je ne suis pas tres fort...).

Si vous avez d'autres idées...

5 réponses

-------------------------------
Réponse au message :
-------------------------------
Salut MrSchmit !
Je me suis confronté au même problême, car je voulais faire un petit programme de chat type irc pour discuter avec des potes de ma classe. En effet, on avait cours d'anglais sur des ordinateurs mis en réseau, et il fallait bien faire autre chose... :-)
En fait, ce qu'il faut, c'est diposer plusieurs contôles winsock (commences avec 3) sur la feuille du serveur.
par contre, pour les clients, 1 seul est necessaire.

pour le serveur, tu mets 4 textbox, un pour l'ip et 3 pour le differents ports, 3 command (servir1, servir 2, servir 3)
pour les client, 1 textbox pour l'ip du serveur, et 1 textbox pour le numero du port.
(naturellement, il faudra 2 autre textbox, le principal pour voir tout les message, et un autre pour ecrire)

Effectivement, il te faut choisir 3 ports différents.
Après, c'est assez simple, il faut juste configurer le serveur pour envoyer les messages qu'il reçoit d'un client aux autres clients.

tu auras donc pour le serveur 3 controles : winsock1, winsock2 et winsock3, ce qui te permet de faire un chat avec 4 personnes différentes. (3 clients + 1 serveur)

la programmation des clients est exactement la même que lorsqu'il n'y a que 2 machines connectés, par contre le serveur doit gérer les 3 clients.

Si le client 1 envoit un message au serveur, on aura, dans le code de la feuille du serveur :

private sub winsock1_receive(ReceiveData as String)
txtMessage = txtMessage & ReceiveData & vbcrlf 'affiche le message au serveur
winsock2.send = ReceiveData 'on envoit aux autres clients
winsock3.send = ReceiveData
end sub

a noter, que "winsock" peut-être remplacer par d'autre contrôle (dsocket1,wsock1...) et vbcrlf permet d'aller à la ligne si tu mets "multiligne = true" pour le textbox principal txtMessage

tu fais 3 sub comme ça et les 4 ordis peuvent voir ce que chacun écrit.

Si c'est le serveur qui envoit le message, c'est plus simple, il l'envoit en même temps au 3 clients.
tu inventes une procedure que tu peux rappeller

private sub sendproc ()
paquet = (message à envoyer )
winsock1.send = paquet
winsock2.send = paquet
winsock3.send = paquet
end sub

si tu veux rajouter des clients, rien ne te l'empêche.
voila, c'est un bon exercice, et ça marche très bien !
0
-------------------------------
Réponse au message :
-------------------------------

Salut Seb,

Merci pour ton aide, depuis mon message j'ai pas mal avancé et du coup j'ai trouvé une solution.
En fait je me sert d'un winsock indexé, un tableau de connection...
L'avantage c'est qu'il peut y avoir autant de connecté qu'on veut (façon de parler...) et ça évite de bordéliser le serveur.
J'ai presque fini, j'ajoute juste quelques petites fonctions sympas (qque trucs vicieux...).
Si tu veut je t'envoie les sources quand j'ai fini.
On pourrait collaborer à des améliorations.
Sur ce bon cours d'anglais !

-------------------------------
Réponse au message :
-------------------------------
Salut MrSchmit !
Je me suis confronté au même problême, car je voulais faire un petit programme de chat type irc pour discuter avec des potes de ma classe. En effet, on avait cours d'anglais sur des ordinateurs mis en réseau, et il fallait bien faire autre chose... :-)
En fait, ce qu'il faut, c'est diposer plusieurs contôles winsock (commences avec 3) sur la feuille du serveur.
par contre, pour les clients, 1 seul est necessaire.

pour le serveur, tu mets 4 textbox, un pour l'ip et 3 pour le differents ports, 3 command (servir1, servir 2, servir 3)
pour les client, 1 textbox pour l'ip du serveur, et 1 textbox pour le numero du port.
(naturellement, il faudra 2 autre textbox, le principal pour voir tout les message, et un autre pour ecrire)

Effectivement, il te faut choisir 3 ports différents.
Après, c'est assez simple, il faut juste configurer le serveur pour envoyer les messages qu'il reçoit d'un client aux autres clients.

tu auras donc pour le serveur 3 controles : winsock1, winsock2 et winsock3, ce qui te permet de faire un chat avec 4 personnes différentes. (3 clients + 1 serveur)

la programmation des clients est exactement la même que lorsqu'il n'y a que 2 machines connectés, par contre le serveur doit gérer les 3 clients.

Si le client 1 envoit un message au serveur, on aura, dans le code de la feuille du serveur :

private sub winsock1_receive(ReceiveData as String)
txtMessage = txtMessage & ReceiveData & vbcrlf 'affiche le message au serveur
winsock2.send = ReceiveData 'on envoit aux autres clients
winsock3.send = ReceiveData
end sub

a noter, que "winsock" peut-être remplacer par d'autre contrôle (dsocket1,wsock1...) et vbcrlf permet d'aller à la ligne si tu mets "multiligne = true" pour le textbox principal txtMessage

tu fais 3 sub comme ça et les 4 ordis peuvent voir ce que chacun écrit.

Si c'est le serveur qui envoit le message, c'est plus simple, il l'envoit en même temps au 3 clients.
tu inventes une procedure que tu peux rappeller

private sub sendproc ()
paquet = (message à envoyer )
winsock1.send = paquet
winsock2.send = paquet
winsock3.send = paquet
end sub

si tu veux rajouter des clients, rien ne te l'empêche.
voila, c'est un bon exercice, et ça marche très bien !
0
cs_the_best Messages postés 212 Date d'inscription jeudi 13 novembre 2003 Statut Membre Dernière intervention 6 avril 2006
6 avril 2004 à 11:42
Ouias et la version de SEB est un peut compliquée. Va voir sur mes soucres ( la dernière), c'est un chat Multi-users
The Best :-p
0
emnabenslim Messages postés 4 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 4 avril 2008
17 mars 2008 à 12:16
emna
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
emnabenslim Messages postés 4 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 4 avril 2008
17 mars 2008 à 12:18
0
Rejoignez-nous