Sonder le réseaux.

raphael_kindt Messages postés 16 Date d'inscription mardi 24 janvier 2006 Statut Membre Dernière intervention 17 août 2008 - 25 janv. 2006 à 09:59
raphael_kindt Messages postés 16 Date d'inscription mardi 24 janvier 2006 Statut Membre Dernière intervention 17 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)

Voilà, si j'y arrive cela sera déjà pas mal !

Merci pour vos conseils, réflexions, etc.

5 réponses

platon179 Messages postés 237 Date d'inscription lundi 20 mai 2002 Statut Membre Dernière intervention 22 juillet 2011 2
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...



Bonne journée @+
0
raphael_kindt Messages postés 16 Date d'inscription mardi 24 janvier 2006 Statut Membre Dernière intervention 17 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...

Pour convertir l'IP j'utilise 'getaddrinfo'

Encore merci...
nfo
0
vangeurmasker Messages postés 99 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 29 mars 2006
25 janv. 2006 à 12:55
J'ai fai une demande de code pour avoir la liste des ordi sur un reseau : http://www.cppfrance.com/forum.v2.aspx?ID=599838

ç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.

Si t'a du mal avec le code nésite pas a demander
0
raphael_kindt Messages postés 16 Date d'inscription mardi 24 janvier 2006 Statut Membre Dernière intervention 17 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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
raphael_kindt Messages postés 16 Date d'inscription mardi 24 janvier 2006 Statut Membre Dernière intervention 17 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?

Merci encore :o)
0
Rejoignez-nous