Chargement...
Allez viens, on est bien !
Inscription / Connexion :
Google
Nouveaux Populaires Likes Favoris
plus
Tous les groupes Créer un groupe



Fonction de "recherche" IP

Salut les chouals !
Étant en 1ère année de DUT R&T, j'ai un programme à réaliser. Moi et mon pote Derp on aime bien la difficulté donc on a choisi de faire une belote en C. Derp s'occupe de la partie jeu et moi réseau, mais voila les problèmes commencent:

Comme vous le savez (ou pas) la belote se joue à 4 donc 4 ordinateurs doivent se "parler" pour obtenir les informations des autres (carte que le joueur a joué, quel est l'atout, etc...). Sauf que cette action n'est pas réalisable si les ordi ne connaissent pas l'adresse IP des autres et rentrer à la main des adresses IP c'est un peu de la merde m'voyez.

Ma question est donc: Savez vous comment je peux procéder pour qu'un ordi choppe les adresses IP des autres ?
Sur le réseaux ça donnerait:
Pc A: Hey les gars, je joue à la belote ! Voila mon adresse IP: 192.168.X.X
Pc B,C,D: Ok on la prend !

Peut être que je trompe totalement et qu'il ne faut pas faire comme ça du tout. J'ai déjà vu un système de "Room" pour des jeux de carte mais je ne sais pas si c’est possible de réaliser ça en TCP/IP.

Je vous remercie d'avance pour vos prochaines réponses qui seront sans aucun doute nombreuses et très percutantes (LOL). :)
Connectez-vous ou ouvrez un compte pour poster un commentaire.
je ferais +- comme cela. (Mais y a certainement moyen de faire mieux, ça date tout cela).

J'ai un client maitre, et 3 client esclave.
Le maître démarre, et toute les x secondes il test le range d'ip sur un port précis (ex:8811).

Un premier client esclave se lance, lui il attend qu'on lui demande qqch sur le port 8811.
Si il reçoit une requête, il répond et communique au maître sont IP, et attend alors sur un autre port 8812, que le jeux démarre.
les 2 autres esclaves font de même.

Un fois les 3 IP communiqué, le jeux démarre.
BriBri
op
@sainsi: Merci beaucoup, je retiens !
Après le truc c'est que tout les ordinateurs de mon bâtiment sont en réseau (environ 150 je dirais) et un serveur DHCP attribue les adresses IP à tout ces ordis donc cela m'oblige à garder la plage d'adresse IP donné par ce serveur. Le client maître devrait donc tester, pour faire simple, chaque ordi du réseau si je te suis bien ?
La durée nécessaire pour tout tester ne sera t-elle pas trop longue ? Je dit ça car je me souviens que quand je faisais un ping vers un pc éteint, mon pc mettait un temps non négligeable pour comprendre qu'il n'aurait pas de réponse donc si il doit le faire pour 150 !

Edit: Et bien sur je me base sur le fait que c'est le dernier ordi à être testé qui va faire démarrer la partie.
@BriBri: Place toi dans un sous-résaux, ou alors installe Vmware, tu fais des images virtuelles dans un VMnet quelquonque et le tour est joué, tu n'est plus que 4 dans ton résau
BriBri
op
@Xkos66: L'idée est bonne mais je suis obligé d'être avec le réseau de 150 (C'est pas moi qui le dit mais mon prof) et comme je le dit plus haut: rentrer des adresses IP est déjà fastidieux, alors créer un sous réseaux...
@BriBri: Pour créer un sous résau ça prends 5 min, t'as juste tes 4 adresses a rentré et comme ça il cherchera pas a mapper toute ton bâtiment, ça feras du trafic en moins
BriBri
op
@Xkos66: Pour moi c'est sur que c'est facile mais pour un utilisateur lambda qui sait à peine utiliser un ordi c'est chaud. C'est pour ça que je voudrais utiliser un autre moyen qui ne nécessite pas l'aide de l'utilisateur.
@BriBri: 2 solutions: 1 serveur (une partie complètement serveur) qui attend 4 clients (c'est la version simple) et tu pars du principe que le serveur est à l'adresse 192.168.1.20 par exemple sur le port que tu veux et les clients s'y connectent et quand y en a 4 hop ça commence et tous les traitements sont fait par le serveur et les clients récupèrent les infos traitées en gros et les affichent (IHM).

2ème solution, 1 client peut aussi être serveur et peut créer une partie, à ce moment là tu gères ça comme un quake ou un cs, les gens font "trouver une partie" et ça affiche les parties dispos sur le réseau et la possibilité de jouer.

Je plussoie, pour le testing montes-toi des VM, c'est pas compliqué et ça va te simplifier la vie! De plus, tu en auras souvent besoin en tant qu'informaticien (que tu te diriges vers le dev ou le réseau).

Pour la communication via les sockets inspires toi des chat en C qui sont pas trop mal codés et surtout simples à comprendre (sur codessources ou site du zéro). Tu copies pas hein, tu comprends, t'en inspires, voire améliore et de toute façon il te faudra adapter la communication pour la belotte mais une fois que tu auras bien compris comment envoyer et recevoir des messages via les sockets c'est facile tu verras :)

ps: en 1ère année de DUT j'aurai pris un jeu plus simple pour apprendre. Un bataille navale par exemple. Mieux vaut un truc simple que l'on fait de bout en bout et que l'on comprend qu'un truc complexe à moitié bricolé que ne t'apprendras pas grand chose (du moins pas comme il faut).
BriBri
op
@Laurent: La deuxième solution me parait super intéressante (j'y avais déjà pensé pour l'avoir vu dans d'autre jeu) mais je ne sais pas du tout comment marche ce système de "room" (je l'appelle comme ça).
J'ai bien essayé de trouver des trucs sur le net mais comme je ne connait pas le nom de ce système ça me limite en résultat.

Et le truc c'est que avec la 1ère solution il y a deux versions pour le programme, ce que je veux éviter par dessus tout. Ou alors il faut choisir entre client et serveur au début (j'y réfléchit en écrivant) c'est ça ?
@BriBri: le souci c'est que c'est beaucoup plus complexe, je ne dis pas que tu n'as pas les capacités mais c'est comme tout, il est conseillé d'y aller molo quand on débute en dev et d'autant plus avec la communication client/serveur. Je te dis pas de faire un morpion mais à mon humble avis tu vises trop haut pour une première appli si tu veux vraiment apprendre comme il faut la communication client/serveur et les sockets. Un chat c'est peut-être trop simple mais une belotte (surtout en mode client qui est aussi serveur) c'est vouloir trop faire trop vite :) (ça ne légitime pas tous mes propos mais j'ai un cursus info et j'ai aussi donné des cours d'info).

Commence en mode 2 versions justement c'est top tu auras la version simple et la version évoluée, super exercice!
BriBri
op
@Laurent: Merci beaucoup, je vais suivre tes conseils !
BriBri
op
@sainsi: Je reviens sur mon commentaire a propos du temps de réponse. J'ai dit n'importe quoi, je ne pensais pas à faire du broadcast...alors que c'est super logique.
Pourquoi ne pas faire 4 clients et 1 serveur ? Il écoute tout le temps sur le même port, suit les règles de jeu et communique avec les clients.
C'est la solution la plus simple à mon avis.
@Bisb: oui voilà c'est exactement ce que je disais, pour une première version, c'est déjà très bien.
BriBri
op
@Laurent: C'est une bonne idée mais il faut une adresse de base (celle du serveur) comme l'a dit Laurent.
@BriBri: Ha oui évidement, mais ça réduit le nombre d'adresses à une, et de toutes façon il te faudra toujours le nom de l'host si tu fais des projets en réseau :-)

Ps : Désolé j'avais pas vu le message le Laurent, j'ai pas du refresh la page avant d'écrire le miens ;-)
Commentaire supprimé.
BriBri
op
@choualbi: Pour nous c'est un bon morceau :)

Pas de sécurité dans le réseaux, aucun parefeu ni rien. On tourne sur Windaube (XP). On utilise Codeblocks comme logiciel. Je vois pas trop quoi dire d'autre...

C'est ça le truc, sauf qu'il faut que le Pc A connaisse les adresses IPs des autres pour leur envoyer et je voudrais trouver les lignes de code qui me permettrait de faire ça. Le reste c'est de la pisse de chat, ou presque.
@BriBri: j'ai delete mon com parcequ'en relisant le titre de ta box, je répondais un peu à côté, mais si t'as compris tant mieux.

Tu codes dans quel langage ?
@choualbi: Si tu avais relus le texte en plus du titre tu aurais la réponse a a question ahah
BriBri
op
@LeSchtroumpf: Ce n'est pas une question de méthode mais de moyen. Je ne sais pas comment écrire ces lignes justement.
@LeSchtroumpf: c'est pas faux
Je sors definitivement..
Une solution pour ne pas à avoir à tous le temps scanner tout le reseau c'est que tu fais un client maitre qui broadcast un paquet sur un port précis avec juste son adresse, pendant ce temps là les clients esclave auront juste à écouter sur ce même port et à attendre qu'un paquet arrive
BriBri
op
@BifleOmatic: Merci beaucoup, tu m'as permis de comprendre que je m'était trompé plus haut. C'est exactement la technique que je vais utiliser !



A Voir
Chargement...
Chargement...
Chargement...