begin process at 2012 02 12 17:23:32
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseaux & Internet

 > TROUVER SA PROPRE ADRESSE IP

TROUVER SA PROPRE ADRESSE IP


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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 :11 898

Auteur : cosmobob

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (20)
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 ;)


 Sources du même auteur

Source avec Zip POINTEUR INTELLIGENT : CLASSE TEMPLATE POUR S'AFFRANCHIR TOT...
Source avec Zip Source avec une capture SNIFFER MSN MESSENGER GRACE AU HOOK DES FONCTIONS WINSOCK
Source avec Zip Source avec une capture PORTS ACTIFS : LISTE LES CONNECTIONS TCP ET UDP EN COURS DE ...
Source avec Zip Source avec une capture BIJECTION EXPLICITE ENTRE N ET Q+
Source avec Zip BOT IRC TOUT SIMPLE, FAIT A L'AIDE DE LA CLASSE PROSOCK

 Sources de la même categorie

Source avec Zip Source avec une capture TRACEROUTE [WINPCAP] par ganjarasta
Source avec Zip SERVEUR MULTITHREAD [LINUX/WIN] par nipepsinicolas
Source avec Zip Source avec une capture SECURE REMOTE SHELL [WIN32] par ganjarasta
Source avec Zip Source avec une capture SUIVI DE PRODUCTION ONDULEUR PHOTOVOLTAÏQUE SOLARMAX par brunovan
Source avec Zip MINICHAT MULTI-CLIENT par wisar

Commentaires et avis

Commentaire de aardman le 01/02/2004 19:01:30

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

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?

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

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.

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

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.

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

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 !!!

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 )

Commentaire de soldier8514 le 08/05/2005 15:35:42

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

Commentaire de LordBob le 08/05/2005 23:05:15

moi je suis sous adsl

Commentaire de soldier8514 le 08/05/2005 23:58:53

parfait merci à toi pour linfo ;)

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.

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)

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

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.

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é )

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.

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

Commentaire de black1bird le 20/08/2009 15:19:58 10/10

merçi beaucoup ça ma beaucoup aidé

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,905 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales