Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

TROUVER SA PROPRE ADRESSE IP


Information sur la source

Catégorie :Réseaux & Internet Niveau : Initié Date de création : 01/02/2004 Date de mise à jour : 01/02/2004 18:22:05 Vu : 9 282

Note :
10 / 10 - par 4 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note


Description

ce code semble un peu plus 'propre' que ceux que j'ai pu voir ici, mais je sais pas s'il marche dans tous les cas donc...
 

Source

  • #include <winsock2.h>
  • #pragma comment(lib, "ws2_32.lib")
  • #include <stdio.h>
  • #include <stdlib.h>
  • void main()
  • {
  • WSADATA wsaData;
  • char host[100];
  • HOSTENT* ip_resolue;
  • SOCKADDR_IN valip;
  • int compteur;
  • // Initialisation des sockets windows.
  • WSAStartup(MAKEWORD(2, 0), &wsaData);
  • // Recuperation du nom d'hote de votre ordi.
  • gethostname(host,sizeof(host));
  • ip_resolue = gethostbyname(host);
  • if (ip_resolue != NULL) // si c'est NULL sans doute n'est on pas connecté.
  • {
  • // recuperation du dernier entier 'compteur' tel que ip_resolue->h_addr_list[compteur] n'est pas null
  • for (compteur = 0; ip_resolue->h_addr_list[compteur+1] != NULL; compteur++) {}
  • memcpy(&valip.sin_addr.s_addr, ip_resolue->h_addr_list[compteur], ip_resolue->h_length);
  • printf("Votre ip vaut : %s \n",inet_ntoa(valip.sin_addr));
  • }
  • }
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
#include <stdio.h>
#include <stdlib.h>

void main()
{
   WSADATA wsaData;
   char host[100];
   HOSTENT* ip_resolue;
   SOCKADDR_IN valip;
   int compteur;

   // Initialisation des sockets windows.
   WSAStartup(MAKEWORD(2, 0), &wsaData);

   // Recuperation du nom d'hote de votre ordi.
   gethostname(host,sizeof(host)); 

   ip_resolue = gethostbyname(host);

   if (ip_resolue != NULL) // si c'est NULL sans doute n'est on pas connecté.
   {
      // recuperation du dernier entier 'compteur' tel que ip_resolue->h_addr_list[compteur] n'est pas null
      for (compteur = 0; ip_resolue->h_addr_list[compteur+1] != NULL; compteur++) {}

      memcpy(&valip.sin_addr.s_addr, ip_resolue->h_addr_list[compteur], ip_resolue->h_length);

      printf("Votre ip vaut : %s \n",inet_ntoa(valip.sin_addr));
   }
}

Conclusion

si chez des gens ca ne marche pas, dites quel est votre OS, d'ou vous etes connectés et votre idée sur le fait que chez vous ca ne donne pas ce qu'il faut.
Merci ;)
 

Commentaires et avis

signaler à un administrateur
Commentaire de aardman le 01/02/2004 19:01:30

Salut,
Avec ca tu trouve l'ip locale, mais pas l'ip internet.

signaler à un administrateur
Commentaire de cosmobob le 01/02/2004 19:07:23

ben moi avec ca jtrouve mon adresse internet. mon adresse locale elle est dans ip_resolue-&gt;h_addr_list[0], et mon adresse internet dans ip_resolue-&gt;h_addr_list[1] (pour moi). dc voila jpense ke l'adresse internet c'est bien le dernier ip_resolue-&gt;h_addr_list[i] non null, ce que calcule le code. l'as tu essayé avant de dire ca?

signaler à un administrateur
Commentaire de alain34270 le 01/02/2004 20:17:30

ce code est certes très propre, mais comment détermines-tu quelle est l'adresse ip de la connexion internet ?

alain

signaler à un administrateur
Commentaire de aardman le 01/02/2004 22:01:31

Salut,
Bien sur que j'ai testé, ton code m'affiche mon ip locale, rien de plus.

signaler à un administrateur
Commentaire de zinotron le 05/03/2004 15:26:26

bah moi, je cherche un ex de ca (paske c tres facilmement modifiable) et je trouve enfin, alors merci.
++
ps: merci beaucoup

signaler à un administrateur
Commentaire de detlev le 07/08/2004 15:48:05

salut,
comment fait-on pour linker ws2_32.lib dans dev-CPP ?
merci d'avance.

signaler à un administrateur
Commentaire de filipuce le 25/08/2004 22:05:47

pour linker dans dev cpp il faut aller chercher "project options" dans un menu (je ne sais plus lequel.

apres dans la fenetre qui apparait tu as deux line edit en bas tu prends la derniere et tu met le nom de ta librairie precedee de "-l"

ex :  -lws2_32 pour ta lib

pour cela il faut creer un projet sinon le menu est grisé
autrement tu doit pouvoir passer en compilant en ligne (g jamais essayé car avant de passer sous linux je ne savais rien faire d'autre que F9 ;) )

voila tcho

signaler à un administrateur
Commentaire de LordBob le 10/02/2005 00:13:45

moi je viens de tester (je sais longtemps après) et ca me donne bien mon adresse internet !!!

signaler à un administrateur
Commentaire de soldier8514 le 08/05/2005 15:32:40

ça marche tres bien ici ( modem rtc ) _ ça me donne l'adresse ip connecté et l'adresse de loopback quand je suis déconnecté  

LordBob , quel est ton type de connexion stp ( j'mré savoir si ça marche sous adsl )

signaler à un administrateur
Commentaire de soldier8514 le 08/05/2005 15:35:42

j'ai failli oublier : 3500 / 10 ;) ++

signaler à un administrateur
Commentaire de LordBob le 08/05/2005 23:05:15

moi je suis sous adsl

signaler à un administrateur
Commentaire de soldier8514 le 08/05/2005 23:58:53

parfait merci à toi pour linfo ;)

signaler à un administrateur
Commentaire de cosmobob le 22/06/2005 10:55:02

en fait si t'es connecté derriere un routeur ou via un proxy, du point de vue de ton PC, tu ne peux pas connaitre l'adresse IP depuis laquelle tu es vu depuis internet, a moins justement d'aller sur internet, et de demander a quelqu'un de te donner ton adresse IP (c'est une illustration, un programme qui fait ca devrait par ex: se connecter sur un site qui affiche l'ip des visiteurs)

cette source marche tres bien dans tous les autres cas.

signaler à un administrateur
Commentaire de W@$h! le 25/08/2005 17:03:42

nickel! C'est clair comme code, et ca marche (j'ai bien mon ip internet)

signaler à un administrateur
Commentaire de Clem le 07/10/2005 21:28:42

le fait que ça marche chez certains, et pas chez d'autres (pas testé ce code la, mais il donnera l'ip locale c'est sur, à part 127.0.0.1 j'en ai pas d'autre que l'api me donnerais ;), c'est bien comme comsobob l'explique, en fait il faudrait juste modifier un peu le code, et au lieu d'une simple boucle for qui prenne la dernière ip donnée par les api, il faudrait inclure un test de l'ip, pour savoir si elle est réseau ou pas ( cf: http://www.commentcamarche.net/internet/ip.php3#reservees )
le seul problème c'est que ce code n'est valade que pour chercher l'ip réseau, l'ip internet ne marchera jamais dans le cas de connexions routeurs, il faudrait donc en plus inclure un test de présence routeur, puis de lui demander l'ip internet le tout par protocole upnp...qui a le courage ? xD

signaler à un administrateur
Commentaire de cosmobob le 21/10/2005 11:13:47

salut,
le pb c'est que ya pas de norme pour tester la presence d'un routeur... en plus tu peux etre derriere un proxy et l'ip de celui ci ne sera pas ton ip internet.

signaler à un administrateur
Commentaire de wizard512 le 27/12/2006 00:34:43

Bonne source,
Code clair, symple et efficace pas de superflue.
Tous l'essentiel a été dis, et explication clair.

J'ai eu besoin d'un bout de code qui pourrait m'indiquer l'adresse ip,
suite a une quelque petites modification, j'ai formulé une fonction
qui me retourne le résultat de la consultation du serveur DNS,
donc l'adresse ip....

Ma note sur cette source : 10 / 10

Encore Bravo, pour ce code maléable, symple et efficace.
Et surtout accéssible a tous... ( Débutant, intermédiaire, confirmé )

signaler à un administrateur
Commentaire de termi111 le 15/11/2007 14:40:44

salut

j'ai essayer de le faire marcher et j'arrive pas je suis sous Dev-C++

  [Linker error] undefined reference to `WSAStartup@8'
  [Linker error] undefined reference to `gethostname@8'
  [Linker error] undefined reference to `gethostbyname@4'
  [Linker error] undefined reference to `inet_ntoa@4'
C:\main.c ld returned 1 exit status
C:\Makefile.win [Build Error]  [Projet1.dll] Error 1

J'ai deja fait quelque programme simple, mais la il y a plein de truc que je comprnd pas donc impossible de débuger.

je veux juste que ca marche, pour pouvoir récupérer mon adresse.

signaler à un administrateur
Commentaire de termi111 le 15/11/2007 22:45:54

probleme resolu

outil => option du compilateur => compilateur => ajouter des commentaire lors de l'appel des liens (à cocher) => ecrire -lws2_32

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,234 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.