IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

se faire voir sur le réseau


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 57
    Points : 26
    Points
    26
    Par défaut se faire voir sur le réseau
    Bonsoir à tous !

    Je susi en train de développer un jeu en réseau, et j'aimerais que lorsqu'un serveur crée une partie, un client qui est sur le même réseau puisse voir que cette partie existe, sans entrer d'adresse IP. Par exemple, ce système est implanté dans warcraft3 : lorsque je vais dans réseau local, je vois la liste des parties crées... Comment faire ? Je sais communiquer sur un réseau mais je ne vois pas comment faire pour qu'une information arrive sur tous les ordis du réseau en meme temps.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    Le principe consiste à envoyer des paquets UDP à une adresse spécifique appelée limited broadcast address, en général 255.255.255.255 en activant l'option broadcast sur la socket.
    (Attention que tu peux ne pas être tout seul à utilise ce mécanisme et qu'il te faut un moyen d'identifier tes paquets pour ne pas interpréter par erreur ceux de quelqu'un d'autre...)
    En fait tout dépend un peu de ce que tu manipules pour gérer le réseau, si c'est une bibliothèque d'un peu plus haut niveau il y a sans doute quelque chose de prévu pour t'aider à gérer ça...

    MAT.
    (j'espère que j'ai pas dit de connerie ça fait des années que j'ai pas fait ça )

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 57
    Points : 26
    Points
    26
    Par défaut
    en fait j'utilise les socket de base sous windows (winwock2)
    est-ce que je dois utiliser les raw socket pour faire ca (option broadcast ?)
    est-ce que quelqu'un a une autre solution ou un tuto ?

    merci !!

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Je ne pense pas qu'il y ait d'autre solution (sans entrer du tout une adresse IP à un quelconque moment).
    Sinon en cherchant 'winsock broadcast' sur google on trouve des trucs, en particulier ça.
    Désolé je ne peux pas t'aider tellement plus je n'y connais rien en winsock, en particulier je ne sais pas ce que signifie 'raw'...

    MAT.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 57
    Points : 26
    Points
    26
    Par défaut
    Merci bien je vais me pencher la-dessus

  6. #6
    screetch
    Invité(e)
    Par défaut
    Salut,

    en fait il ne faut pas utiliser du broadcast mais du multicast.

    Ca revient en gors a :
    - definir une adresse de multicast (c'est dans une certaine plage, par exemple 232.222.12.27). C'est une adresse de classe D mais jem e souviens plus de la plage d'adresses.
    - Tout le monde peut rejoindre le "groupe" de multicast en indiquant que l'on appartient a ce multicast (commande "abonnement" ou MEMBERSHIP)
    - ensuite celui qui envoie des donnees les envoie a tout abonné.

    C'est completement non securisé (n'importe qui peut ecouter le multicast et devenir membre) mais c'est fait specialement pour ce genre de choses

  7. #7
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Il y a "trois" types principaux de sockets 'IP':
    Stream: TCP
    Datagram: UDP
    Raw: IP direct (manipulation du header IP nécessaire).
    Apres... rien n'empeche de rajouter son propre protocole au dessus


    En l'occurence un broadcast UDP se fait simplement par envoi à 255.255.255.255
    Un broadcast est par définition stoppé à l'entrée sur le premier routeur.. Donc... LAN only.


    La solution du multicast (entre autre ici, ca serait plutot du anycast) n'a rien à voir, et permet de rejoindre des groupes 'hors' des frontières du LAN. Il necessite un routeur (pour être précis, une chaine de routeurs) gérant le multicast (ce qui n'est pas forcément le cas, en particulier avec certaines 'box'), et surtout nécessite de 'connaitre' l'addresse de multicast. Le choix de cette addresse étant particulierement ardu. Pour récupérer cette addresse, il faudrait déjà connaitre l'addresse du serveur.
    Je ne connais aucun jeu utilisant cette méthode pour découvrir les "parties" sur le LAN.
    Par contre, certains font du multicast (en particulier les MMOG) pour envoyer les données de la partie (une fois les clients "enregistrés" aupres de l'addresse de multicast).

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/08/2010, 16h10
  2. Réponses: 20
    Dernier message: 13/12/2007, 09h15
  3. Réponses: 2
    Dernier message: 11/11/2007, 00h55
  4. Faire une messagerie sur un réseau local
    Par zoom61 dans le forum Applications
    Réponses: 5
    Dernier message: 17/08/2006, 15h06
  5. Redimensionnement des Paquets IP sur un Réseau Local
    Par Bonoboo dans le forum Développement
    Réponses: 2
    Dernier message: 12/07/2002, 15h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo