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

Langage C++ Discussion :

Lister les machines du reseau local


Sujet :

Langage C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 145
    Points : 99
    Points
    99
    Par défaut Lister les machines du reseau local
    Bonjour à tous,

    j'ai réaliser un chat en tcp/ip qui s'utilise comme ceci :
    On lance le serveur sur une machine "192.168.0.4"
    On lance un client sur une machine "192.168.0.10" avec comme paramètre l'adresse du serveur (ici: "-192.168.0.4").

    Maintenant j'aimerais qu'on lance le serveur sur une machine (n'importe laquelle du réseau local) et je veux que le client (situé aussi sur une machine quelquonque du réseau local) se connecte à se serveur (et dont il ne connait pas l'ip).

    Comment faire pour que le client trouve l'adresse du serveur et s'y connecte ?

    Merci de votre aide.

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Il faut que ton serveur écoute 2 socket, une socket TCP (probablement), c'est celle de ton chat

    et une socket UDP de localisation sur un port quelconque (1234 par exemple).

    Le client quand il se lance commence par calculer son adresse IP du réseau local puis l'adresse de broadcast du réseau local.

    Il émet ensuite un broadcast UDP sur le réseau local sur le port 1234 et attends une réponse.

    Le serveur lorsqu'il reçoit ce broadcast UDP répond en donnant son adresse IP.

    Le client n'a plus ensuite qu'à se connecter normallement à l'adresse IP donnée par la réponse.

    Attention, ceci ne marche que sur un réseau local. Les boradcast UDP ne traversent pas les routeurs (sauf configuration explicite et manuelle).
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 145
    Points : 99
    Points
    99
    Par défaut
    L'adresse de Broadcast est bien l'adresse de diffusion ? Est-ce pareil que le masque de sous réseau ?
    En somme, l'adresse de diffusion est la même pour tout un réseau, non .? Donc si je peux l'obtenir manuellement, je n'aurais pas à la faire chercher par le client ?

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par FluidBlow Voir le message
    L'adresse de Broadcast est bien l'adresse de diffusion ?
    Oui
    Citation Envoyé par FluidBlow Voir le message
    Est-ce pareil que le masque de sous réseau ?
    Non, pas du tout, regarde ici pour plus d'explication : Introduction aux réseaux TCP IP au paragraphe 3

    Il y a 2 adresses de broadcast
    • l'adresse de broadcast que j'appelle "broadcast global" dont la valeur est 255.255.255.255
    • l'adresse de broadcast que j'appelle "broadcast local" dont la valeur est calculée à partir du réseau local et du masque de réseau (sur un réseau 192.168.10.0/24, le broadcast local est 192.168.10.255 par exemple)


    Pour en revenir à ton problème, en y réfléchissant, il est inutile de calculer le broadcast local, tu peux utiliser directement le broadcast global. Il ne passera pas non plus les routeurs et restera donc sur le réseau local.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Utilisez des technologies d’annuaire type Active Directory ou LDAP sont bien plus pérenne.
    Voir UDDI + Web Service + Azure AppFabric(Cloud Computing).

    Enfin c'est pour dire, l'UDP broadcast, c'est vraiment du bricolage.

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par bacelar Voir le message
    Enfin c'est pour dire, l'UDP broadcast, c'est vraiment du bricolage.
    Pas tant que cela, c'est utilisé par Netbios, DHCP, BOOTP, RPC réseau...

    Citation Envoyé par bacelar Voir le message
    Utilisez des technologies d’annuaire type Active Directory ou LDAP sont bien plus pérenne.
    Voir UDDI + Web Service + Azure AppFabric(Cloud Computing).
    Suivant la taille du projet, c'est peut être un peu le rouleau compresseur pour écraser une mouche.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Pas tant que cela, c'est utilisé par Netbios, DHCP, BOOTP, RPC réseau...
    je ne sais pas pour RPC réseau (c'est assez vague, DCOM vous voulez dire?).

    Mais pour les autres non, pas d'UDP du tout, mais des protocoles de plus bas niveau de l'OSI, (niveau 2, IP c'est niveau 3 et UDP c'est niveau ~4).
    C'est normal, vue, qu'ils sont là pour déterminer ou donner des adresses IP (pour NetBios c'est un peu plus complexe), elles même utilisées par le protocole UDP.

    Suivant la taille du projet, c'est peut être un peu le rouleau compresseur pour écraser une mouche.
    Tout à fait, mais ce bricolage a des limites très proches du sol (heu, d'une mouche).

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 145
    Points : 99
    Points
    99
    Par défaut
    Merci mais je souhaite que mon projet reste léger donc pas besoin de rouleau compresseur
    La méthode UDP fonctionne quand même non ?

    Sinon pour la solution proposée (que mon serveur écoute deux socket et que le client envoie l'ip) c'est possible de l'inverser ?

    C'est-a-dire que le client écoute deux socket et que le serveur envoie son ip en UDP pour que le client s'y connecte ? Parceque l'idée est que le client cherche le serveur pour s'y connecter et si il ne le trouve pas, alors il ordonne le lancement du serveur.

    Merci de vos aides

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Merci mais je souhaite que mon projet reste léger donc pas besoin de rouleau compresseur
    Oui, sauf que vos demandes suivantes commencent à sentir le marteau pilon.

    La méthode UDP fonctionne quand même non ?
    Oui, si les firewalls sont reconfigurés sur le serveur et les clients, que les éventuels routeurs intermédiaires soient configurés pour laisser passer ces flux UDP, que les bridges filtrant intermédiaires soit coopératifs, etc...

    Ca marche sans problème pour une LANparty avec un switch.

    Sinon pour la solution proposée (que mon serveur écoute deux socket et que le client envoie l'ip) c'est possible de l'inverser ?

    C'est-a-dire que le client écoute deux socket et que le serveur envoie son ip en UDP pour que le client s'y connecte ?
    Là, c'est plus du tout la même logique, votre solution sera extrêmement consommatrice en bande passante.

    Parceque l'idée est que le client cherche le serveur pour s'y connecter et si il ne le trouve pas, alors il ordonne le lancement du serveur.
    Là, ça sent le marteau pilon.
    Ce que vous demandez est le genre de fonctionnalités qu’implémentent nativement les infrastructures de Service, qui utilisent des annuaires.

    Si vous ne voulez pas réinventer une roue carrée, regardez les solutions clés en mains.

  10. #10
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par bacelar Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pas tant que cela, c'est utilisé par Netbios, DHCP, BOOTP, RPC réseau...
    je ne sais pas pour RPC réseau (c'est assez vague, DCOM vous voulez dire?).
    Non, je parlais bien de RPC réseau (mais peut être que DCOM est dans le même panier), c'est utilisé quand on cherche une ressource RPC sur le réseau et que l'on ne sait pas quel serveur héberge ce RPC. On lance une requête RPC en broadcast UDP sur le port 111 UDP en spécifiant l'identifiant du RPC recherché.

    Citation Envoyé par bacelar Voir le message
    Mais pour les autres non, pas d'UDP du tout, mais des protocoles de plus bas niveau de l'OSI, (niveau 2, IP c'est niveau 3 et UDP c'est niveau ~4).
    C'est normal, vue, qu'ils sont là pour déterminer ou donner des adresses IP (pour NetBios c'est un peu plus complexe), elles même utilisées par le protocole UDP.
    Je ne suis pas sûr que l'on se comprenne mais une requête DHCP part bien en UDP broadcast sur le port 67.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Non, je parlais bien de RPC réseau (mais peut être que DCOM est dans le même panier), c'est utilisé quand on cherche une ressource RPC sur le réseau et que l'on ne sait pas quel serveur héberge ce RPC. On lance une requête RPC en broadcast UDP sur le port 111 UDP en spécifiant l'identifiant du RPC recherché.
    Cela me rappel plutôt DCE-RPC.
    DCOM est dans la même ligné, mais on commence à être à un niveau d'infrastructure bien superieur à du brodcast UDP, avec les couches logiciels + les démons + des représentations de données à la ASN1.

    Je ne suis pas sûr que l'on se comprenne mais une requête DHCP part bien en UDP broadcast sur le port 67.
    C'est une manière de lire les données "transport" des trames mais les en-têtes des supposées protocoles inférieurs ne sont pas valides. Normale, la source n'a pas d'adresse IP (champ obligatoire dans un paquet IP).

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 145
    Points : 99
    Points
    99
    Par défaut
    Bon j'ai trouvé mon bonheur dans cette source :
    http://www.developpez.net/forums/d93...eur-multicast/

    Merci à ram-0000 pour l'idée du fonctionnement et son explication et à bacelar .

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Attention, vous êtes bas niveau et vous devrez faire une infrastructure et des protocoles d'arbitrage pour le lancement du ou des servers.
    Pour faire ce type d'infrastructure, un temps soit peu robuste, il faut beaucoup de travail, que les infrastructures de type "Services" offrent clé en main.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 145
    Points : 99
    Points
    99
    Par défaut
    Je développe sous linux, et les services que vous m'avez proposer n'existent pas sous linux ou ont très très peu de documentation.
    Sachant que le lien de la source fonctionne très bien, et que c'est pour la réalisation d'un petit jeu en réseau local avec des amis, je n'ai pas besoin de plus.
    Merci quand même pour le conseil !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] Lister les ordinateurs du reseau
    Par alex57 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 28/11/2008, 11h46
  2. Comment lister les machines sur le réseau ?
    Par ALT dans le forum Réseau
    Réponses: 11
    Dernier message: 29/06/2007, 14h46
  3. Réponses: 1
    Dernier message: 30/10/2006, 14h29
  4. [C#] Comment lister les ordinateurs du Reseau ?
    Par ArHacKnIdE dans le forum C#
    Réponses: 8
    Dernier message: 11/07/2006, 11h17
  5. [VB6] [Réseau] Lister les ordinateurs du réseau
    Par CYFL dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/12/2002, 09h25

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