Récupérer Adresse IP Réseau [inet_ntoa]

Récupérer Adresse IP Réseau [inet_ntoa] - C - Programmation

Marsh Posté le 09-11-2005 à 21:07:57    

Voila, je cherche a récupérer mon adresse IP du point de vue  de mon réseau....  
Je voudrais obtenir, par exemple, 192.168.0.x et non 127.0.0.1  
 

Code :
  1. #include <sys/types.h>
  2. #include <sys/socket.h>
  3. #include <netinet/in.h>
  4. #include <arpa/inet.h>
  5. #include <stdio.h>
  6. #include <unistd.h>
  7. #include <netdb.h>
  8. void view_ip()
  9. {
  10.   char s[256];
  11.   struct hostent *host;
  12.   struct in_addr **adr;
  13.   if (!gethostname(s, 256))
  14.     if ((host = gethostbyname(s)) != NULL)
  15.       for (adr = (struct in_addr **)host->h_addr_list; *adr; adr++)
  16.           printf("IP : %s\n", inet_ntoa(**adr));
  17. }

 
 
voila..... :)
 
Merci de votre aide !   :jap:

Reply

Marsh Posté le 09-11-2005 à 21:07:57   

Reply

Marsh Posté le 09-11-2005 à 21:48:11    

tetsuo20 a écrit :

Voila, je cherche a récupérer mon adresse IP du point de vue  de mon réseau....  
Je voudrais obtenir, par exemple, 192.168.0.x et non 127.0.0.1  

 char s[256];  
  if (!gethostname(s, 256))



En tout cas, chez moi (Win/XP), ça roule :  


#include <ce qu'il faut pout ta machine>
int main(void)
{
    char s[256];
     
    if (!gethostname(s, sizeof s))
    {
        printf ("Machine: %s\n", s);
        {
            struct hostent *host= gethostbyname(s);
             
            if (host  != NULL)
            {
                struct in_addr **adr;
                 
                for (adr = (struct in_addr **)host->h_addr_list; *adr; adr++)
                {
                    printf("IP : %s\n", inet_ntoa(**adr));
                }
            }
        }
    }
    return 0;
}


Nota, je n'ai pas reporté les particularités de Windows...


Machine: PAPOU3
IP : 192.168.0.5


Message édité par Emmanuel Delahaye le 09-11-2005 à 21:58:44

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 09-11-2005 à 22:43:52    

gethostname place le nom de la machine dans mon tableau s et il se trouve que MAXHOSTNAMELEN est égal a 256, je ne vois pas ou est le problème...
 
Justement, j'automatise une installation serveur et j'ai besoin de l'ip réseau pour named (serveur de noms)... il doit y avoir un moyen...
Comment fait ifoncig récupérer cette ip, il n'y aucune demande au routeur ?

Reply

Marsh Posté le 09-11-2005 à 22:47:31    

que je définisse le nom de ma machine en dur ou que je le récupère via gethostname, c la meme chose.... sous openbsd

Reply

Marsh Posté le 09-11-2005 à 22:55:02    

tetsuo20 a écrit :

que je définisse le nom de ma machine en dur ou que je le récupère via gethostname, c la meme chose.... sous openbsd


Vire moi ça et installe XP, ;) ;) ;)

Message cité 1 fois
Message édité par Emmanuel Delahaye le 09-11-2005 à 22:55:35

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 09-11-2005 à 23:13:54    

Emmanuel Delahaye a écrit :

Vire moi ça et installe XP, ;) ;) ;)


 
Ceci est votre dernier diagnostic ? ^^
 
 :pfff: C'est beaucoup plus attractif de monter sa solution serveur sous openbsd que d'acheter 200EUR un Windows Server 2003 ; bon, cela dit Terminal Server c'est marrant...
 
Non mais, polémique à part, ou est le problème docteur ?

Reply

Marsh Posté le 09-11-2005 à 23:22:52    

tetsuo20 a écrit :

Ceci est votre dernier diagnostic ? ^^
 
 :pfff: C'est beaucoup plus attractif de monter sa solution serveur sous openbsd que d'acheter 200EUR un Windows Server 2003 ; bon, cela dit Terminal Server c'est marrant...
 
Non mais, polémique à part, ou est le problème docteur ?


Bon visiblement, tu n'as aucun humour... Bonsoir..
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 09-11-2005 à 23:28:04    

attention Manu, sur l'echel de l'intégrisme informatique un gus utilisant BSD met une mine a un linuxien de base (qui pourtant place deja la barre tres haut), donc faut vraiment marcher sur des oeufs

Reply

Marsh Posté le 17-11-2005 à 11:39:04    

Ca m'interesse aussi.
 
Je viens de recompiler un jeu réseaux en openjl qu'on avait dévellopé en projet.
 
Il se trouve qu'à l'époque, ce fonctionnait (adresse 192.168.XXX.XXX), mais là came donne 127.0.0.1.
 
C'est peut-etre du à une nouvelle version de gcc ?

Reply

Marsh Posté le 04-05-2006 à 18:34:43    

UP, même problème sous linux, c'est quand même la base de toute appli réseau, personne sait faire  :??:

Reply

Marsh Posté le 04-05-2006 à 18:34:43   

Reply

Marsh Posté le 04-05-2006 à 18:56:39    

ben pareil tu récupères tes adresses IP et t'en choisi une. si tu ne sais pas laquelle, et bien ouvre une connexion vers une machine distante et récupère l'adresse locale à laquelle est bindée ta socket.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed