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 :

Convertion des noms d’hôte des postes d'un réseau LAN en adresses IP


Sujet :

C++Builder

  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 46
    Par défaut Convertion des noms d’hôte des postes d'un réseau LAN en adresses IP
    Bonjour à tous,

    Je vise extraire les noms d’hôte ainsi que les adresses IP des postes d'un réseau LAN et pour se faire j'ai utiliser une fonction que j'ai trouvé dans le forum qui retourne les noms d’hôte voila le code
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    void __fastcall TForm1::EnumNetRes(NETRESOURCE *nr,int rtype,int rusage)
       {
       AnsiString temp;
       AnsiString temp2;
       HANDLE hEnum;
     
       /*La fonction WNetOpenEnum commence une énumération des ressources du réseau
    	ou des connexions existantes.
    	On peut continuer l'énumération en appelant la fonction WNetEnumResource.*/
       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);//Remplit un bloc de mémoire avec des zéros.
       for (;;)
    	  {
     
    	  ReturnVal=WNetEnumResource(hEnum,&Count,NetRes,&BufferSize);/*WNetEnumResource
    	  poursuit l'énumération des ressources du réseau qui a débuté par un appel
    	  à la fonction WNetOpenEnum.*/
    	  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++)
    		 {
    			temp=NetRes[i].lpRemoteName;
     
    		 if (NetRes[i].dwDisplayType==RESOURCEDISPLAYTYPE_SERVER)
    		 {
    			temp=NetRes[i].lpRemoteName;
    			ListBox1->Items->Add(temp.SubString(3,temp.Length()));
    			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); /*La fonction WNetCloseEnum termine une énumération
       des ressources du réseau qui a commencé par un appel à la fonction WNetOpenEnum*/
       }
    et j'ai donc essayer de convertir un nom d’hôte en adresse IP au moyen de la fonction GetHostByName avec ce petit code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    hostent* remoteHost;
    char* host_name;
    host_name="PC-HANEN";
    remoteHost = gethostbyname(host_name);
      /************/
       if (remoteHost == NULL) {
    	   ShowMessage("gethostbyname() failed");
    	} else {
    	   ShowMessage(remoteHost->h_name);
    	   unsigned int i=0;
    	   while ( remoteHost -> h_addr_list[i] != NULL) {
    		  ShowMessage(  inet_ntoa( *( struct in_addr*)( remoteHost -> h_addr_list[i])));
    		  i++;
    	   } }
    qui m'affiche toujour gethostbyname() failed
    Merci d'avance pour votre aide.
    Cordialement,

  2. #2
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    Salut il me semble que tu a oublié d'initialiser Winsock
    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
     
    hostent* remoteHost;
    char* host_name ="PC-HANEN";
    WORD wVersionRequested;
    WSADATA wsaData;
    try
    {
      wVersionRequested = MAKEWORD( 2, 2 );
      WSAStartup( wVersionRequested, &wsaData );
      remoteHost = gethostbyname(host_name);
       if (remoteHost == NULL){
    	   int Error= WSAGetLastError();
    	   RaiseLastOSError(Error);
       }
    	   ShowMessage(remoteHost->h_name);
    	   unsigned int i=0;
    	   while ( remoteHost -> h_addr_list[i] != NULL) {
    		  ShowMessage(  inet_ntoa( *( struct in_addr*)( remoteHost -> h_addr_list[i])));
    		  i++;
       }
      }
      catch(EOSError&E)
      {
    	  ShowMessage(E.Message);
      }
        WSACleanup() // libération des ressources
     }
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 46
    Par défaut
    Merci bien DjmSoftware pour votre aide c'est vraiment ce qui me manque

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

Discussions similaires

  1. [MySQL] Donner des noms différents à des résultats de requêtes ?
    Par meylanie dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 16/04/2010, 18h11
  2. [XL-2003] Remplacer des références par des noms de cellules dans des formules existantes
    Par Daejung dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/04/2010, 19h28
  3. Réponses: 1
    Dernier message: 23/04/2009, 08h59
  4. des noms et des dates.
    Par Jean-Christoph dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/04/2008, 23h06
  5. Créer des allias sur des noms de champ
    Par 33ctdebut dans le forum Access
    Réponses: 3
    Dernier message: 02/03/2007, 10h47

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