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

Développement Discussion :

Ping de broadcast sous Windows


Sujet :

Développement

  1. #1
    ovh
    ovh est déconnecté
    Rédacteur
    Avatar de ovh
    Homme Profil pro
    Architecte devops web full stack
    Inscrit en
    Mai 2002
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte devops web full stack

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 841
    Points : 6 514
    Points
    6 514
    Par défaut [Résolu] Ping de broadcast sous Windows
    Je fais un programme en C++ pour détecter la présence d'un serveur sur un LAN, mais en ne connaissant pas son adresse. Je voudrais donc :
    1. pinger toutes les machines du réseau pour récupérer leurs adresses IP
    2. me connecter au port serveur sur chacune d'elle et voir si ça marche pour détecter la présence du serveur

    Le problème : je voudrais pinger l'adresse broadcast du réseau, mais ça ne marche pas...

    Mon réseau est un classe C tout ce qu'il y a de plus classique : 192.168.0.0/24 et tout fonctionne bien (les machines sont sous Windows 2000 et XP), mais la commande ping 192.168.0.255 ne donne aucun résultat J'ai lu par ailleurs qu'il semblerait en effet que Windows bloque par défaut les ping de broadcast...

    Existe-t-il un (autre) moyen de connaître les adresses IP de tous les postes d'un LAN, sans toucher à la configuration du système d'exploitation ? (je ne peux pas modifier la config de toutes les machines)

    Pour bien faire comprendre mon problème : c'est comme pour un jeu en réseau sur un LAN. Quand on démarre le jeu, il recherche tout seul la présence d'un serveur sur le LAN, et il le fait très vite d'ailleurs c'est ça que je veux arriver à faire aussi

    Merci pour toute idée que vous pourriez me donner

    Tutoriels sur les UPS, e-commerce, PHP, critiques de livres...

    Pensez à consulter les FAQs et les cours et tutoriels.
    FAQ Linux - Cours et tutoriels Linux - FAQ PHP - Cours et tutoriels PHP
    Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles.

    Je n'ai rien à voir avec la société www.ovh.com !

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 15
    Points : 17
    Points
    17
    Par défaut Re: Impossible de pinger l'adresse broadcast sous Windows ?!
    Hello,

    Citation Envoyé par ovh
    Le problème : je voudrais pinger l'adresse broadcast du réseau, mais ça ne marche pas...
    moi ce qui m'aurait etonne c'est que ca marche...

    mais la commande ping 192.168.0.255 ne donne aucun résultat J'ai lu par ailleurs qu'il semblerait en effet que Windows bloque par défaut les ping de broadcast...
    J'aimerais vraiment savoir ou tu as pu lire cela, appareament cela
    voudrait dire que je n'ai jamais rien compris au broadcast....

    Ping 192.168.0.255 ne peut donner de reponse que si il y as une
    machine a cette adresse, et comme ce n'est pas une adresse qui
    serait acceptable pour un poste, beaucoup de chances
    que tu n'arrive meme pas a la configurer...

    A ce que j'en sait (je peut me tromper), lorsque une machine voit
    passer une trame sur le reseau elle releve son en-tete pour voir a
    qui le message est adresse, elle lit le message et y repond sur deux
    criteres :

    - le paquet est specifiquement adresse a cette machine
    - le paquet est envoye par broadcast et si il concerne cette machine
    elle y repond (par exemple, requete DHCP sur un reseau inconnu)

    Existe-t-il un (autre) moyen de connaître les adresses IP de tous les postes d'un LAN, sans toucher à la configuration du système d'exploitation ? (je ne peux pas modifier la config de toutes les machines)
    Il ya en as surement plusieurs, peut pas te repondre specifiquement
    mais par exemple dans l'environnement windows, pour pouvoir
    browser ton reseau ta machine "explore" elle-meme le reseau au
    demarrage, il y as une liste quelque part qui stocke les ressources
    decouvertes a ce moment-la...

    Pour bien faire comprendre mon problème : c'est comme pour un jeu en réseau sur un LAN. Quand on démarre le jeu, il recherche tout seul la présence d'un serveur sur le LAN, et il le fait très vite d'ailleurs c'est ça que je veux arriver à faire aussi
    la solution la plus generale, c'est que lorsque le client est active, il
    lance un broadcast (requete : adresse du serveur ?). Parmis toutes
    les machines qui lisent le message, si une fait serveur, elle recupere
    l'adresse du requerant du message et lui adresse une reponse
    specifique contenant l'adresse du serveur.

    Merci pour toute idée que vous pourriez me donner
    ben.. , le plus propre serait d'envoyer un msg broadcast et
    d'attendre la reponse du serveur mais cela implique de modifier
    le serveur pour qu'il reponde a ces messages, et un traffic broadcast
    peut poser des problemes sur certains reseau, une autre solution
    moins elegante et encore plus gourmande en ressource c'est de
    scanner tout ton subnet en tentant directement l'ouverture du
    port....

    etherlord
    Learn to SEARCH!!!!
    http://fravia.com/

  3. #3
    ovh
    ovh est déconnecté
    Rédacteur
    Avatar de ovh
    Homme Profil pro
    Architecte devops web full stack
    Inscrit en
    Mai 2002
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte devops web full stack

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 841
    Points : 6 514
    Points
    6 514
    Par défaut
    Tout d'abord, merci pour ta réponse, ça me fait plaisir car cette partie du forum est très peu fréquentée.

    Ping 192.168.0.255 ne peut donner de reponse que si il y as une
    machine a cette adresse
    255 c'est justement l'adresse de broadcast --> tous les bits de l'hôte à 1. Je pensais que tous les hôtes du réseau 192.168.0.0 répondraient justement à cet appel...

    Toute la question est là : comment envoyer une trame de broadcast ? Moi je croyais qu'il suffisait de procéder "normalement", comme on fait pour s'adresser à une machine en particulier, mais simplement en mettant l'adresse de broadcast, c'est-à-dire dans mon cas 192.168.0.255.

    Tutoriels sur les UPS, e-commerce, PHP, critiques de livres...

    Pensez à consulter les FAQs et les cours et tutoriels.
    FAQ Linux - Cours et tutoriels Linux - FAQ PHP - Cours et tutoriels PHP
    Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles.

    Je n'ai rien à voir avec la société www.ovh.com !

  4. #4
    Membre habitué Avatar de ddams
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2002
    Messages : 147
    Points : 148
    Points
    148
    Par défaut
    Citation Envoyé par ovh
    Toute la question est là : comment envoyer une trame de broadcast ? Moi je croyais qu'il suffisait de procéder "normalement", comme on fait pour s'adresser à une machine en particulier, mais simplement en mettant l'adresse de broadcast, c'est-à-dire dans mon cas 192.168.0.255
    A mon avis y a un problème de protocole. En effet, le ping utilise ICMP (protocole qui nécessite une ip non broadcast).
    Peut-être ARP (qui résout les adresses IP en adresse MAC) peut-il résoudre le problème mais j'en doute.

    Une solution ne serait-elle pas d'utiliser une adresse multicast (classe D).
    Je sais pas trop comment ça marche mais je sais que c'est très utilisé dans le domaine du streaming video notamment.

    Sinon, effectivement le scan de ta plage ip pourrait répondre à ton problème. Le soucis est que tu risque de scanner beaucoup dans le vide.
    @+ddams

  5. #5
    ovh
    ovh est déconnecté
    Rédacteur
    Avatar de ovh
    Homme Profil pro
    Architecte devops web full stack
    Inscrit en
    Mai 2002
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte devops web full stack

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 841
    Points : 6 514
    Points
    6 514
    Par défaut
    Ah OK, le ping n'accepte pas le broadcast, ça je ne savais pas.

    Si j'essaie d'ouvrir un port TCP ou UDP sur une adresse broadcast (192.168.0.255 par exemple), ça va marcher ? Je vais avoir une réponse de chaque machine ayant ce port ouvert ?

    Tutoriels sur les UPS, e-commerce, PHP, critiques de livres...

    Pensez à consulter les FAQs et les cours et tutoriels.
    FAQ Linux - Cours et tutoriels Linux - FAQ PHP - Cours et tutoriels PHP
    Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles.

    Je n'ai rien à voir avec la société www.ovh.com !

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 15
    Points : 17
    Points
    17
    Par défaut
    Hello,

    Citation Envoyé par ovh
    Toute la question est là : comment envoyer une trame de broadcast ? Moi je croyais qu'il suffisait de procéder "normalement", comme on fait pour s'adresser à une machine en particulier, mais simplement en mettant l'adresse de broadcast, c'est-à-dire dans mon cas 192.168.0.255.
    je pense egallement que l'adresse de destination specifie ce mode,
    donc envoyer le paquet a 192.168.0.255 me parait correct,
    auquel cas le probleme serais plutot comment recuperer l'info
    transportee par le broadcast du point de vue du serveur....

    par contre, lorsque le paquet broadcast est envoye, toutes les
    machines le lisent mais ne repondent que celles qui sont
    concernees.... donc si tu envoie ta sequence d'initialisation
    en broadcast sur le bon port, theoriquement le serveur recoit
    le paquet... je peux pas te dire la froidement si il va y repondre
    tel quel... reste encore la question du type de paquet a envoyer...
    tcp ou udp ??

    Vais voir si je retrouve l'info dans mon bordel.....

    etherlord
    Learn to SEARCH!!!!
    http://fravia.com/

  7. #7
    Membre habitué Avatar de ddams
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2002
    Messages : 147
    Points : 148
    Points
    148
    Par défaut
    moi je suis persuadé que ça marchera pas.

    Sauf erreur de ma part, le système utilise le broadcast exclusivement pour les résolutions IP - adresse MAC (avec ARP).

    Il est vrai que la façon dont marche les serveur de jeux sur internet serait interessante à connaitre. Mais il est probable qu'ils s'annoncent à un serveur principal sur lequel se connecte le client.

    Si ton réseau est effectivement une classe C (sans sur-réseau ou sous-réseau), le scan de l'ensemble de la plage d'adresse devrait prendre peu de tps car il y a peu d'adresses d'hôtes dans cet adressage.
    Le scan est alors une bonne solution.

    Qu'appelle tu le port serveur ?

    Sous windows, pour savoir si le service serveur est démarré sur une machine windows on utilise la commande DOS :
    Si on a une ligne avec <20>, le service est effectivement démarré.


    Désolé de ne pas pouvoir t'aider plus...
    @+ddams

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 15
    Points : 17
    Points
    17
    Par défaut
    Hello,

    Citation Envoyé par ddams
    Sauf erreur de ma part, le système utilise le broadcast exclusivement pour les résolutions IP - adresse MAC (avec ARP).
    pas exclusivement......

    A DHCP server holds a number of free IP addresses available for allocation to workstation clients. A client computer, upon startup for the first time, issues a DHCP Discover to a DHCP server by sending a broadcast on the local subnet
    Le livre Windows Socket Network Programming illustre d'ailleurs
    l'utilisation des diagrames UDP pour l'envoi d'un broadcast destine
    a un serveur TIME...

    ovh:

    va checker cette page, il y as un source en C pour faire du
    broadcast, l'exemple est pour IPX mais ca devrait deja te
    donner une indication sur la facon de proceder...

    EDIT : avais oublie le link.... http://www.codeguru.com/network/IpxCheck.shtml

    Sinon il y as aussi la FAQ WinSock qui parle un peu du broadcast:
    http://tangentsoft.net/wskfaq/

    section 3.8

    etherlord
    Learn to SEARCH!!!!
    http://fravia.com/

  9. #9
    ovh
    ovh est déconnecté
    Rédacteur
    Avatar de ovh
    Homme Profil pro
    Architecte devops web full stack
    Inscrit en
    Mai 2002
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte devops web full stack

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 841
    Points : 6 514
    Points
    6 514
    Par défaut
    Un grand merci pour toutes vos réponses, ça fait plaisir

    Merci ehterlord pour tes liens, j'irai voir ça.

    ddams, en fait mon but est donc de détecter la présence d'un serveur Quake2 sur un LAN de classe C et je crois (mais je ne suis pas sûr) qu'un serveur Quake2 ouvre le port UDP 27910.
    J'ai trouvé un petit programme freeware qui fait... exactement la même chose (mais plus général, donc il supporte plein de jeux différents) :
    http://www.agsm.net/techbits.php
    Je suis en train de lire les informations techniques D'après ça et le sniffing que j'ai fait, je vois ceci : le client (détecteur) envoit un paquet UDP au port 27910 à l'adresse 255.255.255.255, mais je n'ai pas vu la réponse passer. Que représente l'adresse 255.255.255.255 ? Un broadcast sur tous les réseaux atteignables qui passent au travers des routeurs ?

    Tutoriels sur les UPS, e-commerce, PHP, critiques de livres...

    Pensez à consulter les FAQs et les cours et tutoriels.
    FAQ Linux - Cours et tutoriels Linux - FAQ PHP - Cours et tutoriels PHP
    Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles.

    Je n'ai rien à voir avec la société www.ovh.com !

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    787
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 787
    Points : 276
    Points
    276
    Par défaut
    oui c'est cela.En effet Pijng n'accepte pas l'adresse de Broadcast 192.168.1.255,les autres ont bien vu!!
    Et pour ce qui est du 255.255.255.255 ,c'est une adresse de diffusion : Tous les noeuds du réseau y compris donc les Sous Réseau et les Suréseaux seront "avertis".
    Cordialement ovh ca faisait lgtps!!

  11. #11
    ovh
    ovh est déconnecté
    Rédacteur
    Avatar de ovh
    Homme Profil pro
    Architecte devops web full stack
    Inscrit en
    Mai 2002
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte devops web full stack

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 841
    Points : 6 514
    Points
    6 514
    Par défaut
    Voilà j'ai résolu mon problème en utilisant le composant TNMUDP de C++Builder
    J'ai tout simplement lancé un paquet UDP sur le port de Quake2 à l'adresse de broadcast et ça marche, je reçois une réponse de chaque machine faisant tourner un serveur, avec leur IP.

    Merci à tous pour vos réponses.

    Tutoriels sur les UPS, e-commerce, PHP, critiques de livres...

    Pensez à consulter les FAQs et les cours et tutoriels.
    FAQ Linux - Cours et tutoriels Linux - FAQ PHP - Cours et tutoriels PHP
    Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles.

    Je n'ai rien à voir avec la société www.ovh.com !

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

Discussions similaires

  1. Problème (programme de ping sous Windows)
    Par Tomystique dans le forum Débuter
    Réponses: 11
    Dernier message: 14/03/2008, 13h02
  2. Réponses: 5
    Dernier message: 18/05/2007, 20h27
  3. Ping de broadcast pour scanner un LAN ? (sous windows)
    Par SamRay1024 dans le forum Développement
    Réponses: 1
    Dernier message: 05/09/2006, 12h23
  4. Broadcast sous Windows
    Par bounnitcharaf dans le forum Développement
    Réponses: 2
    Dernier message: 21/11/2005, 03h05
  5. OmniORB : code sous Windows et Linux
    Par debug dans le forum CORBA
    Réponses: 2
    Dernier message: 30/04/2002, 17h45

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