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

  FORUM HardWare.fr
  Programmation
  C

  récupérer sa propre IP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

récupérer sa propre IP

n°657861
steboulay
Posté le 27-02-2004 à 15:34:30  profilanswer
 

Voila je suis à la recherche d'un petit bout de code qui me permettrtait d'afficher ma propre adresse ip .
j'arrive à afficher l'adresse du cient qui se onnecte mais pas mon adresse  
Pouvez-vous m'aider svp ?
 
Merci ,  

mood
Publicité
Posté le 27-02-2004 à 15:34:30  profilanswer
 

n°657864
polo021
Posté le 27-02-2004 à 15:36:11  profilanswer
 

gethostbyname?

n°657869
*syl*
--> []
Posté le 27-02-2004 à 15:42:49  profilanswer
 

puts("127.0.0.1" );
 
[:boidleau]

n°658086
Konar
Posté le 27-02-2004 à 18:49:36  profilanswer
 

plateforme ?
 
si windows : man GetIpAddrTable(), pour récuperer un tableau de toutes les ip de la machine
sinon chais pas.

n°658418
steboulay
Posté le 28-02-2004 à 12:41:35  profilanswer
 

sous unix

n°658431
black_lord
Truth speaks from peacefulness
Posté le 28-02-2004 à 12:45:26  profilanswer
 

polo021 a écrit :

gethostbyname?


 
[:romf]

n°658452
Konar
Posté le 28-02-2004 à 13:23:57  profilanswer
 

pour une solution qui marche sous win/linux :
 
gethostname() puis gethostbyname(), les adresses IP des interfaces de la machine devraient etre dans le champ h_addr_list de la struct hostent* retournée.
 
(solution fouettante/deprecated sous win)

n°662817
meumeul
Stay Heavy
Posté le 04-03-2004 à 14:01:55  profilanswer
 

j'ai cree un socket, je l'ai attaché au systeme sur un port  

Code :
  1. serv.sin_family = AF_INET;
  2. serv.sin_addr.s_addr = htonl(INADDR_ANY);
  3. serv.sin_port = htons(port);
  4. // attachement d'une adresse au socket
  5. if (bind (sock,(struct sockaddr *) &serv, sizeof serv) <0) {
  6.  perror("erreur attachement d'adresse (bind)" );
  7.  exit(1);
  8. }


 
et apres je fais ca

Code :
  1. cheminImage =  (char *) malloc(strlen((char *) get_current_dir_name())+ strlen(inet_ntoa(serv.sin_addr))+4+7);
  2. strcpy(cheminImage, "http://" );
  3. strcat(cheminImage, inet_ntoa(serv.sin_addr));
  4. strcat(cheminImage, (char *) get_current_dir_name());
  5. strcat(cheminImage, "/img" );
  6. printf("chemin %s", cheminImage);


 
et jobtiens
 
chemin http://0.0.0.0/home/mehdi/Tp3.Last/img
 
je pense que le probleme vient de INADDR_ANY lors de l'attahcment. non? comment faire sinon? parce que tout le reste de l'appli marche avec serv (de type sockaddr_in)
 
merci

n°663806
Konar
Posté le 05-03-2004 à 00:46:49  profilanswer
 

pfff, tout me fait chier en ce moment et pas envie d'expliquer pourquoi ton code veut rien dire, mais bon vais tenter : tu as une socket que tu 'bind' a une adresse locale, ici affectée INADDR_ANY, qui est égale a 0x00000000, alors forcément l'appel a inet_ntoa te renvoie 0.0.0.0.
 
en gros INADDR_ANY est fait pour écouter sur une machine sans se soucier de ses adresses ip.
 
un bout de la solution :  

Code :
  1. char name[256];
  2. gethostname(name, 256);
  3. hostent *host = gethostbyname(name);


après demerde toi pour récuperer toutes tes ip, elles sont quelquepart dans host->h_addr_list.

n°664361
meumeul
Stay Heavy
Posté le 05-03-2004 à 14:23:43  profilanswer
 

gethostname(name, 256);  
 
dans name, j'ai m63.net195-131-236.noos.fr
 
et du coup gethostbyname fait nimp...

mood
Publicité
Posté le 05-03-2004 à 14:23:43  profilanswer
 

n°664363
black_lord
Truth speaks from peacefulness
Posté le 05-03-2004 à 14:28:57  profilanswer
 

ca te va pas ça ?
 

Code :
  1. hptr=gethostbyname("localhost" );

n°664377
meumeul
Stay Heavy
Posté le 05-03-2004 à 14:49:36  profilanswer
 

Code :
  1. h = gethostbyname("localhost" );
  2. if (h == NULL)
  3. printf("NULL\n" );
  4. printf("%s\n", *(h->h_addr_list));
  5. //ou
  6. printf("%s\n", (h->h_addr_list)[0]);


 
et ca affiche RIEN... comprend pas la


Message édité par meumeul le 05-03-2004 à 14:52:33
n°664510
docmaboul
Posté le 05-03-2004 à 16:32:31  profilanswer
 

meumeul a écrit :

Code :
  1. h = gethostbyname("localhost" );
  2. if (h == NULL)
  3. printf("NULL\n" );
  4. printf("%s\n", *(h->h_addr_list));
  5. //ou
  6. printf("%s\n", (h->h_addr_list)[0]);


 
et ca affiche RIEN... comprend pas la


 
C'est normal puisqu'il y a quatre octets dans ton (h->h_addr_list)[0]. Que représentent-ils d'après toi ?

n°664517
Konar
Posté le 05-03-2004 à 16:37:01  profilanswer
 

putain mais tu vas lire la doc !
 
chuis pas un fan de ce genre de réponse, mais la c'est obligé :
man gethostbyname
man hostent
 
en gros c'est pas stocké sous forme de char*.

n°664680
meumeul
Stay Heavy
Posté le 05-03-2004 à 18:16:18  profilanswer
 

moi je lis  
struct hostent {
 
...
char ** h_addr_list;
 
}
 
mé bon


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

  récupérer sa propre IP

 

Sujets relatifs
Récupérer les entrées clavier, la souris et le joystick sous Delphi[Jtextarea] Récupérer la position du curseur ?
[HTML/PHP] Récupérer l'adresse MAC du gars qui a fait la requête...(jdbc) récupérer la valeur auto-increment avec sql server
Comment recuperer le nom d'un objet (image) selectionne en vba Excel ?comment récuperer l'adresse d'un objet à partir d'un methode (static)
Récupérer les données pour les mettre dans une base accessAu secour ! Recuperer simplement un flux rss 2.0
[JAVA]récupérer une saisie clavier[java ]recuperer la liste (complete) des methodes via introspection
Plus de sujets relatifs à : récupérer sa propre IP


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