[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 :arrow: c'est ça que je veux arriver à faire aussi :D
Merci pour toute idée que vous pourriez me donner :D
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...
Citation:
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)
Citation:
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...
Citation:
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 :arrow: c'est ça que je veux arriver à faire aussi :D
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.
Citation:
Merci pour toute idée que vous pourriez me donner :D
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