Probleme envoi/reception données chat multiclient

Signaler
Messages postés
169
Date d'inscription
jeudi 24 juillet 2003
Statut
Membre
Dernière intervention
17 août 2010
-
Messages postés
169
Date d'inscription
jeudi 24 juillet 2003
Statut
Membre
Dernière intervention
17 août 2010
-
Hello :)

Tout d'abord merci de vous intéresser a ma question ;)

Voici mon probleme : j'essaie de faire un chat multiclient basique.. cependant j'ai un probleme (en fait j'en ai meme plein :p) :

-Lorsque j'envoie une donnée (message) via le serveur (qui se compose de 2 winsocks : "Wck" qui a un index "Wck(i)" et le serveur a proprement dit : "Winsock"),le client qui s'est connecté en dernier le recoit seulement, et non les autres. Comment faire pour que tout le monde la recoive ?

-Lorsque j'envoie une donnée (message) via un client, seul le serveur la recoit, et non les autres clients connectés sur le serveur.. et j'aimerai que tout le monde la recoive..

-Imaginons que je me connecte avec un client, puis que je me déconnecte (sans quitter le prog'), je n'arrive plus a me reconnecter... grrrr ^^ comment permettre une connexion//déconnexion ?

-Comment connaitre l'ip dynamique (donc du web et non celle du reseau local comme l'afficherait un label ayant pour caption "Winsock1.LocalIP") d'un serveur ? (et sans passer par un site svp ^^)

S'il vous plait, j'ai tout essayé, tous les codes possibles et inimaginables (sauf un : le bon ^^ c'est un vrai casse tete chinois), merci de prendre en compte ma question :)

Bonne prog a tous et a toutes !

2 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Salut
Brouillon tout ça.
On demande dans le règlement de ne poser qu'une seule question à la fois, parce que là, tout se mélange et attaquer tous les problèmes de front n'est pas la solution, d'autant qu'en résolvant les premiers, tu auras les réponses aux suivants.

Comme son nom l'indique, une connexion client(s)-serveur désigne le dialogue entre un ou plusieurs clients avec un serveur.
Il est donc normal que, quand tu parles au serveur, aucun autre client ne reçoive ce message.
Il t'appartient donc de programmer le renvoi de ce message aux autres clients.
Si j'ai bien compris, chaque client à un Winsock qui est indexé : Une boucle For-Next fera l'affaire pour envoyer le même message à tous les clients connectés.
Connexion/Déconnexion : Côté serveur, le Winsock indexé de ce client déclenchera un évènement Close : Suffit donc de le surveiller pour réinitialiser ce Winsock.
> Charges 2 ou 3 sources qui parlent de "Chat" multiclient (ce n'est pas ce qui manque sur vbfrance) et regarde comment s'est fait, tu sauras tout

IP dynamique n'est pas le terme adapté. Ce que tu cherches est l'IP publique.
Si tu ne veux pas passer par un site Web qui te renverra l'IP, il faudra la demander à ton routeur avec une requète http --> Voir controle INet et sa commande URLOpen qui te renverra le texte de la page web que tu vois quand appelles la page dans ton Internet Explorer, genre   http://192.168.1.1
Il te suffira d'isoler l'IP parmi le texte qu'il te retourne.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
169
Date d'inscription
jeudi 24 juillet 2003
Statut
Membre
Dernière intervention
17 août 2010
1
Merci beaucoup, mais pour l'histoire du brouillon, je ne sais pas pourquoi mais le forum ne prend pas en compte les retours a la ligne, d'ou un texte tout serré :s
J'ai deja essayé une boucle Next For (for i = 0 to Nombreconnexions -> wck(i).senddata etc etc) mais sa ne marche pas avec un "i". J'ai essayé de mettre le i a 0, a 1, en fonction du nombre de clients connectés, mais le Wck(i) ne marche pas.. il marche seulement si je mets Wck(0) (ou tout autre entier). Je te remercie d'avoir répondu cependant, mais en général les sources sont un peu compliquées, et vu mon niveau.. ;) Bonne prog' !