Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2580 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Obtenir une ip en fonction d'un nom de domaine

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Obtenir une ip en fonction d'un nom de domaine

n°1318917
casafa
Posté le 05-03-2006 à 13:10:56  profilanswer
 

Bonjour,
 
Je cherche une focntion compatible Win/Linux qui permettrait de retrouver l'ip d'un site grâce à son nom de domaine.
 
Merci...

mood
Publicité
Posté le 05-03-2006 à 13:10:56  profilanswer
 

n°1319081
Taz
bisounours-codeur
Posté le 05-03-2006 à 19:04:25  profilanswer
 

gethostbyname

n°1319082
ory
Posté le 05-03-2006 à 19:07:07  profilanswer
 

à partir du nom de domaine tu peux avoir au mieux les ip des dns.
 
Après faut voir ce que tu entends par nom de domaine
 
Sans compter le fait que certains sites utilisent du round robin et donc un nom d'hôte peut renvoyer à plusieurs ip

n°1319107
casafa
Posté le 05-03-2006 à 20:20:07  profilanswer
 

Merci pour vos réponses mais:
 

Code :
  1. const char *site = "http://zenux.free.fr";
  2. struct hostent *getip;
  3. getip = gethostbyname(site);
  4. cout<<getip->h_addr<<endl;


 
Ce code me fait un "Erreur de segmentation" : pourquoi ?


Message édité par casafa le 05-03-2006 à 20:20:52
n°1319116
psyphi
Posté le 05-03-2006 à 20:51:01  profilanswer
 

Voila un petit code que j'avais pour obtenir l'ip à partir d'un nom d'hôte:
le code est en C et fonctionne sous Unix et Win32:

Code :
  1. /*
  2. * Program name : get_ip.c
  3. * author : psyphi
  4. * e-mail : psyphi@gmail.com
  5. * last update : August 11 2005
  6. * compile : gcc -o getip get_ip.c -> Linux
  7. *           gcc -o getip get_ip.c -lwsock32 -> Windows
  8. * usage : ./getip <hostname>
  9. */
  10. #include <stdio.h>
  11. #include <errno.h>
  12. #if defined(WIN32)
  13. #include <winsock2.h>
  14. #pragma comment(lib, "ws2_32.lib" )
  15. #else
  16. #include <sys/socket.h>     /* pour avoir AF_INET */
  17. #include <netdb.h>          /* pour gethostbyname() & struct hostent */
  18. #include <netinet/in.h>     /* pour inet_ntoa() */
  19. #endif
  20. int main(int argc, char * argv[])
  21. {
  22.   #if defined(WIN32)
  23.   WSADATA WSAData;
  24.   WSAStartup(MAKEWORD(2,0), &WSAData);
  25.   #endif
  26.   if(argc!=2)
  27.   {
  28.     fprintf(stderr,"Usage : %s <hostname> \n",argv[0]);
  29.     exit(1);
  30.   }
  31.  
  32.   struct hostent * host=gethostbyname(argv[1]);
  33.  
  34.   if(!host)
  35.   {
  36.     fprintf(stderr,"host error\n" );
  37.     exit(1);
  38.   }
  39.  
  40.   fprintf(stdout,"Hostname : %s \n",host->h_name);
  41.   fprintf(stdout,"IP adress : %s \n",inet_ntoa(*((struct in_addr * )host->h_addr)));
  42.  
  43.   return 0;
  44. }

n°1319117
Joel F
Real men use unique_ptr
Posté le 05-03-2006 à 20:52:42  profilanswer
 

genre WSAStartup c'ets une fonction Linux o_O ???

n°1319120
psyphi
Posté le 05-03-2006 à 20:54:36  profilanswer
 

Si tu lis bien tu verras que le compilateur prend en compte cette ligne seulement si il est sur une machine win32.
Ce programme fonctionne parfaitement sur linux et windows, je l'utilise sur ces deux plateformes.

n°1319129
casafa
Posté le 05-03-2006 à 21:12:42  profilanswer
 

Merci pour ce code...
A la fin de ton code je croit qu'il manque ça ;) :
#if defined(WIN32)
 WSACleanup();
#endif
 
J'avais "Erreur de segmentation" à cause que je mettait "http://" dans le nom de domaine !


Message édité par casafa le 05-03-2006 à 21:12:55
n°1319254
bjone
Insert booze to continue
Posté le 06-03-2006 à 11:06:47  profilanswer
 

passke gethostbyname échoues et te retournes un NULL.

n°1320435
psyphi
Posté le 07-03-2006 à 18:26:34  profilanswer
 

Les lignes :
#if defined(WIN32)
 WSACleanup();
#endif  
ne sont pas obligatoire mais c'est plus propre tu as raison.
Pour éviter d'avoir une erreur de segmentation faut faire un test sur l'host.
C'est ce que je fais aux la lignes 38 -> 42.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Obtenir une ip en fonction d'un nom de domaine

 

Sujets relatifs
[PHP5] fonction qui liste les paramètres d'une méthode de classe[Fonction Randomize]
Fonction RechercheV sous VB ExcelSpécifier une variable dans une fonction connection text
[EXCEL] Fonction chronométragefonction array sous VB pour excel
[jsp] passage de fonction[VBScript] [RESOLU] modifier une fonction dans une boucle
appeller une fonction en javascript à l'aide d'un variableFonction : Si un nombre et negatif
Plus de sujets relatifs à : Obtenir une ip en fonction d'un nom de domaine


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR