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

  FORUM HardWare.fr
  Programmation
  C++

  get adresse IP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

get adresse IP

n°181353
Gaspard
Posté le 24-07-2002 à 10:46:24  profilanswer
 

Bonjour,  
Sous linux, je voudrais écrire une fonction en langage C qui puisse m'afficher l'@IP de la machine sur laquelle tourne mon programme

mood
Publicité
Posté le 24-07-2002 à 10:46:24  profilanswer
 

n°181421
bb138
La vie est belle ...
Posté le 24-07-2002 à 11:16:09  profilanswer
 

Là je suis sous Win mais je pense qu'avec un bind tu dois pouvoir récupérer les infos nécessaires.

n°181437
Gaspard
Posté le 24-07-2002 à 11:32:34  profilanswer
 

le bind c'est pour les sockets

n°181443
bb138
La vie est belle ...
Posté le 24-07-2002 à 11:35:14  profilanswer
 

Ben oui mais je n'ai pas d'autre solution à te proposer....
A moins que l'IP soit copiée dans une variable d'environnement au démarrage (là je délire peut-être un peu) auquel cas un getenv() est plus rapide...

n°181555
sanglier04
Posté le 24-07-2002 à 13:00:58  profilanswer
 

ta deux solution que je connais
- soit tu utilise  
 

Code :
  1. struct hostent*hp=gethostbyname(nomHote);
  2.    if(hp==NULL)
  3.    {
  4.      msgBox("Impossible d'obtenire les informations sur l'hôte." );
  5.          return FALSE;
  6.    }
  7.    char *p;
  8.    for (int i=0; hp->h_addr_list[i]!=NULL; i++)
  9.    {
  10.     p =(char *) &(*((unsigned int *) hp->h_addr_list [i])) ;
  11.         memset (ipCarteReseau[i], 0, 16);
  12.         sprintf(ipCarteReseau[i], "%d.%d.%d.%d",
  13.                        (unsigned char)*(p+0),
  14.                (unsigned char)*(p+1),                                  (unsigned char)*(p+2),
  15.                        (unsigned char)*(p+3));
  16.    }


qui te fou les ips dans ipCarteReseau
 
- soit tu crée une socket puis tu utilise la fonction ioctl je crois pour lire les info directement dans le module, il faut que recherche dans les sources de ifconfig

n°181558
Gaspard
Posté le 24-07-2002 à 13:12:27  profilanswer
 

Pour la première solution avec gethostbyname, il faut le nom de la machine je crois
Le principe de cette fonction, c'est que tu fourni le nom de l'hôte et gethostbyname te renvoi l'@IP associée à ce nom d'hôte
Il me faudrait la même chose, mais sans être obligé de préciser le nom de la machine :D

n°181562
sanglier04
Posté le 24-07-2002 à 13:25:30  profilanswer
 

ben tu prend la deuxième alors :)

n°181567
Gaspard
Posté le 24-07-2002 à 13:32:33  profilanswer
 

Non finalement, je prends la première
Je fais d'abord nom_hote=system("hostname" );
et ensuite gethostbyname(nom_hote);
et ça marche ;)
Je sais pas si c'est très bien de faire appel à la commande system dans un programme, mais pour le moment j'ai pas mieux
merci

n°181663
sanglier04
Posté le 24-07-2002 à 14:43:22  profilanswer
 

ben je vois po vraiment comment tu peus faire autrement et puis c fait pour ca ...

n°181665
antp
Super Administrateur
Champion des excuses bidons
Posté le 24-07-2002 à 14:45:23  profilanswer
 

Sous Windows y a aussi une fonction GetHostByName, mais en plus il y a une fonction GetHostName qui renvoie le nom du PC courant. Y a pas ça en Linux ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
mood
Publicité
Posté le 24-07-2002 à 14:45:23  profilanswer
 

n°181725
LeGreg
Posté le 24-07-2002 à 15:31:47  profilanswer
 

127.0.0.1
 
LeGreg

n°181728
antp
Super Administrateur
Champion des excuses bidons
Posté le 24-07-2002 à 15:32:25  profilanswer
 

J'ose espérer que ce n'est pas pour faire une connexion locale qu'il avait besoin de ça :o


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°181760
LeGreg
Posté le 24-07-2002 à 15:50:52  profilanswer
 

En fait c'est une question plus philosophique qu'il n'y parait
 
l'adresse IP c'est ce qui permet de me contacter depuis l'ordinateur B distant.
 
Si B est sur mon brin, il peut utiliser une adresse de broadcast pour me contacter (pratique s'il ne connait pas mon adresse). Si je suis B, alors un localhost = 127.0.0.1 suffit. Si B est sur mon reseau local, il peut me contacter a l'adresse 196.x.x.x, adresse fixée par mon administrateur reseau.
Si B est sur de l'autre coté de la terre, c'est l'adresse que m'aura fourni mon fournisseur d'acces que je lui donnerai, parfois tous les gens de ma compagnie auront la meme adresse ou il y aura un nombre d'adresses limitées à répartir entre toutes les demandes de connexions.
Si j'ai deux (ou plus) cartes réseau alors je suis rattaché à deux brins, et suivant la position de B, je devrai lui fournir l'une ou l'autre adresse.
 
A+
LeGreg

n°181770
antp
Super Administrateur
Champion des excuses bidons
Posté le 24-07-2002 à 15:55:29  profilanswer
 

par locale je voulais dire sur lui même (loopback)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°181773
LeGreg
Posté le 24-07-2002 à 15:56:12  profilanswer
 

une solution tres simple pour avoir son adresse distante
c'est d'interroger une machine sur internet et lui demander de quelle adresse semble provenir la connexion.
 
LeGreg

n°182193
sanglier04
Posté le 24-07-2002 à 22:25:40  profilanswer
 

voila la deuxième solution (je suis po sur que ce soit complètement fiable, je vien juste de la faire)
 

Code :
  1. ifreq ifr;
  2. sockaddr_in *saddin;
  3. if(sock=sock(AF_INET, SOCK_DGRAM, 0)<0)
  4.    //erreur
  5. strcpy(ifr.ifr_name, "eth0" );
  6. ifr.ifr_addr.sa_family=AF_INET;
  7. if(ioctl(sock, SIOCGIFADDR, &ifr)<0)
  8.    //erreur
  9. saddin=(sockaddr_in*)&ifr.ifr_addr;
  10. cout<<inet_ntoa(saddin->sin_addr);
  11. close(sock);


 
par cette méthode la tu peus obtenire un nombre impréssionant de renseignement


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

  get adresse IP

 

Sujets relatifs
Passage d'adresse de fonctiondans une pop up faire disparaitre le champ adresse
[C++/MFC/API Windows] Pour ouvrir une adresse web ?[Delphi, Pascal] une méthode de classe n'a pas d'adresse ????!
Lien vers une adresse email en htmlprobleme d'adresse www.monsite.com HELP!
[C++]Lire qqc à une adresse mémoire précise[VB] erreur 10048, Adresse en utilisation
[PHP] Crée un lettre avec l'adresse du destina qui se trouve dans BD[PHP] Adresse IP du client
Plus de sujets relatifs à : get adresse IP


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)