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

C++Builder Discussion :

Trouver les adresses ip d'un réseau local [Sources]


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut Trouver les adresses ip d'un réseau local
    Bonjour a tous,
    je voudrais savoir si il y a moyen de trouver les adresses ip des différentes postes d'un réseaux local.
    Si vous avez une idée ca m'interrésse, car moi je n'en ai pas du tout (a par tester toute les adresse ip mais ce n'est pas possible vu le nombre d'adresse possible).
    A plus

  2. #2
    Membre chevronné Avatar de nemo69500
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 639
    Par défaut
    Tu vas dans favorie reseau et la tu recupere tous les nom dont tu ve l ip , ensuite tu fais demarer->executer et tu tape "cmd" puis entrer

    ensuite tu tape "ping nom_de_ordi" et tu tape entrer et la tu a l ip

  3. #3
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    oui, mais je sous entendai que je voulais le faire dynamiquement.
    excuse moi de m'être mal exprimé.

  4. #4
    Membre chevronné Avatar de nemo69500
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 639
    Par défaut
    ba je suis dsl j vois pas maias la reponse a ca m interresse , si qqun connait

  5. #5
    Membre chevronné Avatar de niglo
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 379
    Par défaut
    Par exemple, tu peux faire un serveur sur le poste qui doit lister les ips !!
    Ce serveur attend les connexions de toutes les machines du réseau local et les listent ! Problème de cette méthode : tu dois lancer une appli sur tous les postes de ton réseau local. Tout dépend de ton réseau local (taille, diverses contraintes...) et de ce que tu veux faire avec la liste dynamique des ips !!

    Sinon, je ne vois rien d'autre pour le moment !
    Désolé

  6. #6
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    En fait j'ai une appli qui se connecte a un serveur dont l'adresse ip est configurée et stocké dans un fichier, mais je voudrais que, si l'appli n'arrive pas a se connecter a l'adresse indiqué, elle cherche automatiquement si il n'y a pas un autre serveur démarré sur le réseau.
    Je sais, c'est un peut fou, mais j'aimerais développer cette fonctionalité.

  7. #7
    Membre éprouvé
    Avatar de Freeze
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 131
    Par défaut
    Salut,

    Tu devrais essayer ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    void TFPrincipal::EnumNetRes(NETRESOURCE *nr,int rtype,int rusage)
       {
       AnsiString temp;
       HANDLE hEnum;
       if (WNetOpenEnum(RESOURCE_GLOBALNET,rtype,rusage,nr,&hEnum)!=NO_ERROR)
          return;
       DWORD Count=-1;
       DWORD BufferSize=1024;
       DWORD ReturnVal=0;
       NETRESOURCE *NetRes=(NETRESOURCE *)new char[BufferSize];
       ZeroMemory(NetRes,BufferSize);
       for (;;)
          {
          ReturnVal=WNetEnumResource(hEnum,&Count,NetRes,&BufferSize);
          if (ReturnVal==ERROR_MORE_DATA)
             {
             Count=-1;
             delete []NetRes;
             NETRESOURCE *NetRes=(NETRESOURCE *)new char[BufferSize];
             ZeroMemory(NetRes,BufferSize);
             ReturnVal=WNetEnumResource(hEnum,&Count,NetRes,&BufferSize);
             }
          if (ReturnVal!=NO_ERROR)   break;
          for (DWORD i=0;i<Count;i++)
             {
             if (NetRes[i].dwDisplayType==RESOURCEDISPLAYTYPE_SERVER)
             {
                temp=NetRes[i].lpRemoteName;
                LB->Items->Add(temp.SubString(3,temp.Length()));
             }
             if (( NetRes[i].dwUsage & RESOURCEUSAGE_CONTAINER)==RESOURCEUSAGE_CONTAINER)
                EnumNetRes(&NetRes[i],rtype,rusage);
             }
          if (ReturnVal==ERROR_NO_MORE_ITEMS)
             {
             delete []NetRes;
             WNetCloseEnum(hEnum);
             }
          }
       delete []NetRes;
       WNetCloseEnum(hEnum);
       }
    //---------------------------------------------------------------------------
    bon pour le moment j'ai mis le résultat dans une listbox que j'ai appelé LB
    , tu peux appeler cette fonction comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    EnumNetRes(0,RESOURCETYPE_ANY,0);
    ca te donne le nom des postes ... si ca peut t'aider ...

  8. #8
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Merci beaucoup, cela me suffit amplement.

  9. #9
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 105
    Par défaut
    bjour j'ai voulu essayer ce procedure en modifiant just l'affichage et sa ma pas marché elle rien afficher . merci d'avance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    void TFPrincipal::EnumNetRes(NETRESOURCE *nr,int rtype,int rusage)
       {
       AnsiString temp;
       HANDLE hEnum;
       if (WNetOpenEnum(RESOURCE_GLOBALNET,rtype,rusage,nr,&hEnum)!=NO_ERROR)
          return;
       DWORD Count=-1;
       DWORD BufferSize=1024;
       DWORD ReturnVal=0;
       NETRESOURCE *NetRes=(NETRESOURCE *)new char[BufferSize];
       ZeroMemory(NetRes,BufferSize);
       for (;;)
          {
          ReturnVal=WNetEnumResource(hEnum,&Count,NetRes,&BufferSize);
          if (ReturnVal==ERROR_MORE_DATA)
             {
             Count=-1;
             delete []NetRes;
             NETRESOURCE *NetRes=(NETRESOURCE *)new char[BufferSize];
             ZeroMemory(NetRes,BufferSize);
             ReturnVal=WNetEnumResource(hEnum,&Count,NetRes,&BufferSize);
             }
          if (ReturnVal!=NO_ERROR)   break;
          for (DWORD i=0;i<Count;i++)
             {
             if (NetRes[i].dwDisplayType==RESOURCEDISPLAYTYPE_SERVER)
             {
                temp=NetRes[i].lpRemoteName;
                ShowMessage(temp.SubString(3,temp.Length()));
             }
             if (( NetRes[i].dwUsage & RESOURCEUSAGE_CONTAINER)==RESOURCEUSAGE_CONTAINER)
                EnumNetRes(&NetRes[i],rtype,rusage);
             }
          if (ReturnVal==ERROR_NO_MORE_ITEMS)
             {
             delete []NetRes;
             WNetCloseEnum(hEnum);
             }
          }
       delete []NetRes;
       WNetCloseEnum(hEnum);
       }
    et je l'ai appler dans ma code avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EnumNetRes(0,RESOURCETYPE_ANY,0);

  10. #10
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Salut,
    comment s'appelle la fenêtre principal de ton application ?

  11. #11
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 105
    Par défaut
    Form1, mais moi j'ai enlever TFPrincipal::
    merci d'avance

  12. #12
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Alors dans les fichier .cpp de ta fenêtre principal tu ajoute le code donnée dans cette discussion en remplaçant TFPrincipal par TForm1
    Dans le .h de la même fenêtre tu dois avoir du code qui ressemble à cela, ajout-y la ligne que j'ai mis en rouge :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class TForm1 : public TForm
    {
      published :
      ...
      public :
      TForm1(TObject* Owner);
      ...
      void EnumNetRes(NETRESOURCE *nr,int rtype,int rusage);
    };
    Et maintenant tu n'as plus qu'a appeler cette méthode d'où tu veut dans la fenêtre principal

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

Discussions similaires

  1. Comment savoir toutes les adresses IP dans un réseau local ?
    Par andrianiaina dans le forum Administration
    Réponses: 13
    Dernier message: 01/09/2010, 13h56
  2. [XL-2003] adresse arborescence fichier en réseau local
    Par billx06 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/05/2010, 13h21
  3. Réponses: 0
    Dernier message: 27/10/2009, 14h14
  4. [Débutant] les bases de données pour réseau local ou monopost
    Par maximedu42 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 05/11/2007, 11h19
  5. Liste les domaines et les postes du domaines dans Réseau Local
    Par bnisaid dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 23/04/2007, 08h48

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