raphael_kindt
Messages postés16Date d'inscriptionmardi 24 janvier 2006StatutMembreDernière intervention17 août 2008
-
25 janv. 2006 à 09:59
raphael_kindt
Messages postés16Date d'inscriptionmardi 24 janvier 2006StatutMembreDernière intervention17 août 2008
-
27 janv. 2006 à 11:16
Bonjour à tous,
Je cherche un moyen pour sonder le réseau.
Je m'explique:
Je voudrai connaître toutes les machines du réseau local qui écoute sur un port particulier. Cela pour offrir la possibilité à une application cliente de sélectionner un serveur reconnu (via le nom dns), plutôt que de demander à celle-ci d'écrire manuellement l'adresse de ce serveur.
De plus, il serait intéressant de pouvoir indiquer sur quel groupe de travail la recherche devra être effectuée.
A savoir:
J'utilise les sockets pur et dur... (pas de librairie encapsulant les sockets)
J'utilise une machine Windows 2000
Mon outils de développement: VS.NET (pour l'instant je suis toujours sur les MFC pas encore le framework, mais j'y songe)
platon179
Messages postés237Date d'inscriptionlundi 20 mai 2002StatutMembreDernière intervention22 juillet 20112 25 janv. 2006 à 10:47
Salut :)
Tu pourrais faire une boucle de tentative de connection sur toutes les
machines d'un intervalle d'IP déterminé sur le port de ton choix...Les
machines qui répondent correctement sont donc celles qui accepteraient
les connections sur le port de ton choix... Ou alors tu peux utiliser
l'adresse de broadcast du réseau X.X.X.255, mais je ne connais pas
comment le retour se fait...
Une fois que tu as l'IP de la machine, il y a une fonction qui permet
de récupérer son DNS il me semble (ca doit être quelque comme hostent
*gethostbyaddr(char *ip, int len, int type), mais je suis plus sûr à
100%)... Une recherche sur gethostbyaddr sur google devrait t'aider pas
mal, tu tomberas certainement sur les pages du manuel Linux online,
mais le fonctionnement est le même sous Win...
Par contre en ce qui concerne le groupe de travail, j'ai absolument aucune idée...
raphael_kindt
Messages postés16Date d'inscriptionmardi 24 janvier 2006StatutMembreDernière intervention17 août 2008 25 janv. 2006 à 11:13
merci pour la sugestion.
J'ai en effet déjà pu constater que beaucoup de programmeurs utilise le scanning d'IP par tentative de connection sur un port déterminé. Je crée qu'il n'y ait pas d'autres méthodes. Aussi, je crains fort que cette technique prenne du temps...
ça t'évite déja d'avoir a tester toutes les IP possibles.
En modifiant un peut le code ( eleve la condition
if(*((WORD*)NetRes[count].lpRemoteName) == 0x5C5C) { // 2 premiers char
'\\') tu a les ordi qui aparaissent classées par groupes de travail
Il ne reste plus qu'a tester si les ordi répondent.
raphael_kindt
Messages postés16Date d'inscriptionmardi 24 janvier 2006StatutMembreDernière intervention17 août 2008 27 janv. 2006 à 11:10
Grand MERCI pour ce bout de code... En effet c'est bien plus pratique!
Je suppose que maintenant il me suffit de tenter une connection sur un port déterminé sur chaque machine "connectable" du réseau! Y a-t-il une méthode rapide pour éviter un scanning de port? C'est à dir, est-ce qu'il y a un jeu de fonctions qui me permet de connaître tout les ports ouvert sur une machine déterminée? Ou le seul moyen c'est de tenter cette conenction?
Merci encore
Vous n’avez pas trouvé la réponse que vous recherchez ?
raphael_kindt
Messages postés16Date d'inscriptionmardi 24 janvier 2006StatutMembreDernière intervention17 août 2008 27 janv. 2006 à 11:16
Grand MERCI pour ce bout de code... En effet c'est bien plus pratique!
Je suppose que maintenant il me suffit de tenter une connection sur un port déterminé sur chaque machine "connectable" du réseau! Y a-t-il une méthode rapide pour éviter un scanning de port? C'est à dire, est-ce qu'il y a un jeu de fonctions qui me permet de connaître tout les ports ouvert sur une machine déterminée? Ou le seul moyen c'est de tenter cette conenction?