djipey
Messages postés7Date d'inscriptiondimanche 17 février 2008StatutMembreDernière intervention15 août 2008
-
11 août 2008 à 21:41
cs_kiitos
Messages postés34Date d'inscriptionvendredi 10 mars 2006StatutMembreDernière intervention14 septembre 2008
-
10 sept. 2008 à 11:24
Bonsoir!!
voila je code un programme de chat avec Qt, qui se sert de l'adresse Ip de l'utilisateur pour héberger le serveur. Une fois qu'un utilisateur a crée un réseau, les autres peuvent se connecter au chat, mais il faut qu'ils connaissent l'adresse IP du serveur.
Je voudrais rendre le chat accessible par tous, et ne pas laisser le choix de l'adresse IP au client.
Aussi j'ai pensé à une solution:
-dés que le client se connecte au chat, on enregistre son adresse IP
-si aucun serveur n'existe parmi les adresses que connait le programme, on crée un serveur, sinon on se connecte au serveur existant.
J'aurais donc deux questions à vous soumettre:
-comment vérifier si un serveur existe déja
-comment obtenir l'adresse IP du client qui se connecte?
je vous serai reconnaissant pour toute l'aide que vous pourrez m'apporter.
SebLinck
Messages postés212Date d'inscriptionmardi 17 mai 2005StatutMembreDernière intervention23 juin 2011 12 août 2008 à 09:44
(Re)Salut,
Effectivement, j'ai une petite idée de comment faire...
J'ai eu la même idée que toi pour la mise en place d'un Chat:
(Créer le serveur si aucun serveur n'est actif dans le liste des IP connue).
mais il se pose un problème, lorsque qu'aucun des serveur susceptibles
de recevoir des connexions n'est actif, tous les clients qui se lancent créent
un serveur de leur côté et n'ont aucun moyen de communiquer leur adresse IP,
tu imagines la suite ...
Pour tes question maintenant:
1) comment savoir si un serveur est actif:
Il faut tenter de se connecter, ou regarder si le port que tu utilise est ouvert
2) Comment connaître l'adresse du client qui se connecte:
Dans l'API Socket, la fonction accepte va stoker cette adresse dans la structure
passée en paramètre (second paramètre ):
struct sockaddr * addr
voilà, bonne continuation..
(je serait très motiver de tester ton programme, voir de le porter sous linux)
djipey
Messages postés7Date d'inscriptiondimanche 17 février 2008StatutMembreDernière intervention15 août 2008 12 août 2008 à 09:54
"mais il se pose un problème, lorsque qu'aucun des serveur susceptibles
de recevoir des connexions n'est actif, tous les clients qui se lancent créent
un serveur de leur côté et n'ont aucun moyen de communiquer leur adresse IP,
tu imagines la suite ... " (je n'ai pas trouvé les citations)
Il est possible que certaines choses m'échappent, je ne l'ai pas fait, mais si aucun serveur n'est actif, le premier client qui se connecte crée un serveur.
Ceux qui suivent, en faisant leurs vérifications, vont tomber dessus et se connecter, non?
Mais j'ai trouvé une autre solution qui me parait bien:
-je crée un site internet qui récupére l'IP du client qui se connecte dans une string;
-dés que le client se connecte, il va sur ce site, vérifie s'il y a une adresse, voit s'il peut s'y connecter, et sinon efface cette adresse et met la sienne à sa place.
cette solution a le mérite d'etre moins lourde, mais je ne sais pas créer un site internet qui pourrait me faire ça.
Si vous pouviez m'indiquer quelques pistes...
cordialement, djipey.
Vous n’avez pas trouvé la réponse que vous recherchez ?
SebLinck
Messages postés212Date d'inscriptionmardi 17 mai 2005StatutMembreDernière intervention23 juin 2011 12 août 2008 à 10:18
(Re) Salut,
Et bien tu vas vite, je ne voulais pas te donner de solution toute faite...
je pense qu'une base de donnée serait plus approprié pour stocker tes adresses.
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 12 août 2008 à 14:41
Salut,
En même temp si tu disposes d'un serveur sur le net, autant y faire
tourner un serveur entierement dedié a ton prog plutot que de stocker
des adresses ip, tu pourras t'y connecter depuis n'importe quel client
(alors qu'un client qui cherche a se connecter a un autre client qui
fait office de serveur risque d'avoir des problemes si ce dernier est
mal configuré), et les clients pourrons s'y connecter et s'y
deconnecter librement (alors qu'un client qui fait office de serveur
sera obligé de rester jusqu'a ce que le dernier client connecté parte).
djipey
Messages postés7Date d'inscriptiondimanche 17 février 2008StatutMembreDernière intervention15 août 2008 12 août 2008 à 14:47
Oui ce que tu dis est très juste, j'y avais pensé, et je me suis dit que si le clint/serveur partait, ts les clients se déconnecteraient, mais que le premier qui referait une connexion hébérgerait le nouveau serveur. Pas top je le reconnais.
Ce que tu dis m'intéresse.
Mais le réseau je ne gére pas trop. Avoir un serveur sur le net ça nécessite quoi?
De quelle maniére procéder?