begin process at 2012 02 10 06:29:04
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseaux & Internet

 > RÉCUPÉRER SON IP (BORLAND CPP)

RÉCUPÉRER SON IP (BORLAND CPP)


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseaux & Internet Classé sous :windows, ip, winsock Niveau :Débutant Date de création :27/12/2001 Date de mise à jour :18/12/2005 23:07:34 Vu :17 395

Auteur : ADPro22

Ecrire un message privé
Site perso
Commentaire sur cette source (27)
Ajouter un commentaire et/ou une note

 Description

Permet de récupérer son IP
Ce code fonctionne aussi avec VC++  


Source

  • #include <iostream.h>
  • #include <stdlib.h>
  • #include <windows.h>
  • #include <winsock.h>
  • #pragma comment( lib, "wsock32.lib" )
  • void AfficheIP(void)
  • {
  • struct sockaddr_in sin;
  • struct hostent * phe;
  • char FAR buffer[64] ;
  • // Initialisation du service WSA
  • WORD wVersionRequested;
  • WSADATA wsaData;
  • int err;
  • wVersionRequested = MAKEWORD(1, 1);
  • err = WSAStartup(wVersionRequested, &wsaData);
  • if (err != 0)
  • {
  • cerr << "Impossible de trouver winsock.dll";
  • }
  • // Récupération du nom de la machine
  • gethostname(buffer, sizeof(buffer));
  • // Récupération de la liste d'ips associées à la machine
  • phe = gethostbyname(buffer);
  • if(phe==NULL)
  • {
  • cerr << "Erreur : pointeur nul";
  • WSACleanup();
  • system("PAUSE");
  • exit(1);
  • }
  • // Enumération des adresses
  • int I = 0 ;
  • while((phe->h_addr_list[I+1])!=NULL)
  • {
  • I++;
  • }
  • memcpy(&sin.sin_addr.s_addr, phe->h_addr_list[I], phe->h_length);
  • cout << "Hote : " << buffer << endl ;
  • cout << "Adresse : " << inet_ntoa(sin.sin_addr)<< endl ;
  • WSACleanup();
  • }
  • void main()
  • {
  • AfficheIP() ;
  • system("PAUSE");
  • }
#include <iostream.h>
#include <stdlib.h>
#include <windows.h>
#include <winsock.h>


#pragma comment( lib, "wsock32.lib" )	


void AfficheIP(void)
{
  struct sockaddr_in sin;
  struct hostent * phe;
  char FAR buffer[64] ;

  // Initialisation du service WSA
  WORD wVersionRequested;
  WSADATA wsaData;
  int err;
  wVersionRequested = MAKEWORD(1, 1);
  err = WSAStartup(wVersionRequested, &wsaData);
  if (err != 0)
  {
    cerr << "Impossible de trouver winsock.dll";
  }

  // Récupération du nom de la machine
  gethostname(buffer, sizeof(buffer));

  // Récupération de la liste d'ips associées à la machine
  phe = gethostbyname(buffer);
  if(phe==NULL)
  {
    cerr << "Erreur : pointeur nul";
    WSACleanup();
    system("PAUSE");
    exit(1);
  }

  // Enumération des adresses
  int I = 0 ;
  while((phe->h_addr_list[I+1])!=NULL)
  {
    I++;
  }
  memcpy(&sin.sin_addr.s_addr, phe->h_addr_list[I], phe->h_length);

  cout << "Hote : " << buffer << endl ;
  cout << "Adresse : " << inet_ntoa(sin.sin_addr)<< endl ;

  WSACleanup();

}



void main()
{
  AfficheIP() ;
  system("PAUSE");
}
   

 Conclusion

MAJ: 11/12/2002
Ajout de : #pragma comment( lib, "wsock32.lib" )

Permet l'ajout automatique de la librairie wsock32.lib à l'édition des liens
Cela fonctionne sous VC++6.0. Pour les autres compilateurs, je souhaiterai que vous le mettiez dans les commentaires. Merci.

MAJ: 02/08/2003
Explications pour la ligne while((phe->h_addr_list[I+1])!=NULL) [question de Sardinoman]
Il est possible que votre pc ai plusieurs interfaces réseau (voire même plusieurs ip :( )
e.g. votre carte de réseau local, et votre modem, soient 2 interfaces, avec a priori 2 ips différentes. La boucle while permet de récupérer la dernière adresse ip de la liste.

MAJ: 15/04/2004
Ajout de quelques commentaires.


 Historique

18 décembre 2005 23:07:34 :
-maj mots clefs

 Sources du même auteur

TRANSFORMER UN INT/DOUBLE... EN CHAINE DE CARACTÈRES DE TYPE...
Source avec Zip ICONE DANS LA BARRE DES TACHES AVEC MENU (VC++)
Source avec Zip SERVEUR/CLIENT SOUS WINDOWS EN MODE CONSOLE (VC++,DEVCPP,BOR...
Source avec Zip CLASSE DE CALCUL MATRICIEL (VC++ ET DEVCPP)
CLASSE DE CALCUL MATRICIEL (VC++ ET DEVCPP)

 Sources de la même categorie

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
SOCKET CPP par baptchr55

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture POUR AFFICHER LES CARACTÈRES ACCENTUÉS SOUS WINDOWS EN MODE ... par pgl10
Source avec Zip Source avec une capture SOKOBAN EN C POUR DÉBUTANT (VERSION AMÉLIORÉE BASÉE SUR LE T... par eustatika
Source avec Zip [MYLIB] GESTION DE FICHIERS par Galaad2908
Source avec Zip LIRE UNE IMAGE JPEG DEPUIS UNE ADRESSE IP par synopsism
Source avec Zip PROTECTION AU DÉMARAGE DE WINDOWS ET PENDANT par daminator2

Commentaires et avis

Commentaire de Kaid le 28/12/2001 08:27:29

Tu peux rendre un peu plus propre le programme en utilisant:

char FAR * inet_ntoa (struct in_addr in);

qui permet de transformer l'adresse IPv4 contenue dans la structure in_addr en une chaine de caractères.

Commentaire de laigle76 le 25/10/2002 18:57:24

salut,
je sais po si ca vientde moi de mon logiciel ( MS vc++ 6.0) ou de qqch d'autre mais le code ci dessus ne marche po....
Si vous pouviez m'eclairer ca serai sympa

Commentaire de jbrek le 28/10/2002 22:29:45

Ouais, y 9 erreurs chez moi !

error C2065: 'cerr' : undeclared identifier
error C2297: '&lt;&lt;' : illegal, right operand has type 'char [34]'
error C2297: '&lt;&lt;' : illegal, right operand has type 'char [22]'
error C2143: syntax error : missing ';' before 'type'
'I' : undeclared identifier
error C2065: 'cout' : undeclared identifier
'&lt;&lt;' : illegal, right operand has type 'char [8]'
error C2065: 'endl' : undeclared identifier
'&lt;&lt;' : illegal, right operand has type 'char [11]'
Error executing cl.exe.

sous VC++ 6. Bizarre ?

Commentaire de Beuss le 28/10/2002 23:22:30

t'aurais pas oublié le #include &lt;iostream.h&gt; par hasard ?
ca marche nickel (faut la librabry ws2_32.lib)

Commentaire de Mike le 02/11/2002 15:03:38

cool ce prog mais y manque bien ws2_32.lib !!! www.moteurprog.com

Commentaire de jbrek le 02/11/2002 19:56:19

J'ai trouvé plus simple, moins long, et exactement pareil je crois...

Commentaire de magik le 06/12/2002 23:09:56

Bonjour, je n'arrive pas a faire fonctionner ce code, voici les erreurs que j'ai, serait il possible que quelqu'un puisse me dire pourquoi,

checkDlg.obj : error LNK2001: unresolved external symbol __imp__gethostname@8
Debug/check.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

Merci d'avance.

Magik

Commentaire de magik le 06/12/2002 23:12:56

Rebonsoir, oups me suis trompé, c'est un autre code, voici les erreurs que j'ai,
main.obj : error LNK2001: unresolved external symbol _inet_ntoa@4
main.obj : error LNK2001: unresolved external symbol _gethostbyname@4
main.obj : error LNK2001: unresolved external symbol _gethostname@8
main.obj : error LNK2001: unresolved external symbol _WSAStartup@8

merci encore et désolé :(

Magik

Commentaire de ADPro22 le 06/12/2002 23:28:59

Dans les options du projet visual C++, dans l'onglet link, il faut rajouter la librairie : winsock32.lib

Commentaire de magik le 07/12/2002 12:36:48

Rebonjour, merci beaucoup ça marche nickel.
Bonne journée

Magik

Commentaire de Sardinoman le 22/12/2002 21:11:14

Je suis pas sur de ce ke je dis mais au lieu de tout compliquer avec h_addr_list tu peux directement mettre h_addr (c le dernier element)

Commentaire de Vincman87 le 19/01/2003 11:28:56

Bonjour,
J'utilise C++ Builder 6 et il me dit
[Lieur Erreur fatale] Fatal: Unable to open file 'WSOCK32.LIB'
Merci de m'éclairer la dessus !
A+

Commentaire de cirend le 10/07/2003 01:31:48

Linking...
serveur.obj : error LNK2001: unresolved external symbol _WSACleanup@0
serveur.obj : error LNK2001: unresolved external symbol _closesocket@4
serveur.obj : error LNK2001: unresolved external symbol _recv@16
serveur.obj : error LNK2001: unresolved external symbol _accept@12
serveur.obj : error LNK2001: unresolved external symbol _listen@8
serveur.obj : error LNK2001: unresolved external symbol _bind@12
serveur.obj : error LNK2001: unresolved external symbol _htons@4
serveur.obj : error LNK2001: unresolved external symbol _socket@12
serveur.obj : error LNK2001: unresolved external symbol _WSAStartup@8
Debug/serveur.exe : fatal error LNK1120: 9 unresolved externals
Error executing link.exe.

serveur.exe - 10 error(s), 0 warning(s)

Commentaire de ADPro22 le 10/07/2003 18:45:58

ben c'est une erreur de link. il te manque wsock32.lib ou assimilée. donc il faut que tu trouves la bibiothèque qui va avec winsock.h (peut-etre qqch du genre winsock.lib winsock_32.lib ...) regarde dans le dossier des librairies.
et puis tu mets le nom dans #pragma comment...

(au passage, je l'ai compilé avec borland 5.5 - freecommandlinetool )

Commentaire de Vincman87 le 10/07/2003 18:47:41

Merci :) ADPro22

Commentaire de ADPro22 le 10/07/2003 18:55:58

Ah, je n'avais pas vu. idem pour cirend. Il te manque wsock32.lib.
(j'imagine que c'est compilé avec Visual C++ là)
Je ne comprends pas que le #pragma ne fonctionne pas. c'est que tu ne dois pas avoir la librairie, ou qu'elle s'appelle autrement.

Commentaire de D1m3x le 17/08/2003 17:11:26

Slt,
c t pas trop compliker c vré mai uh merci kan mm, on a pas tjs le tem de reprogrammer des pti trucs pareil , alor je me sui servi de ton code pour lintegrer ds mon client IRC (slm g du changer des trucs...) et bien sur, en ho de mon code g mis:
/********************************************
Merci a ADPro22, pour avoir recompenser ma paresse *
*********************************************

mdr!!, je te jure ke je lai mis! :)

aller a+ ;)

bonne prog a tous ;)

Commentaire de Siriusgalaxie26 le 07/10/2003 12:17:56

Super cette methode. Seulement, elle n'affiche que l'IP local (127.0.0.1). Comment detecter l'adresse IP Internet ?

Commentaire de ADPro22 le 08/10/2003 21:45:19

la liste phe-&gt;h_addr_list contient l'ensemble des adresses ip de ta carte réseau. En les affichant une par une, tu pourras voir toutes les ips associées à ta carte.

Commentaire de Vstef69 le 15/04/2004 12:14:41

Bonjour,
j' ai reussi à faire fonctionner votre code, mais pourriez vous mettre quelques commentaire pour me permettre de comprendre.

Merci
Cordialement

Commentaire de _ky_ le 01/10/2004 14:20:59

int main()
{
     system("ipconfig");
     system("pause");
     return (0);
}

;)

Commentaire de yoyo269 le 25/02/2005 20:44:07

Pour Siriusgalaxie26 ou toute autre personne intéressée pour récupérer leur IP internet si vous avez un prox ou un routeur ou des trucs dans le genre.
J'ai posté un code pour ça.
La technique n'est certainement pas idéale mais elle a le mérite de donner l'IP internet à tous les coups.
Voilà l'adresse :

http://www.cppfrance.com/code.aspx?id=29467

YOYO, @+.

Commentaire de cleter le 17/03/2005 17:10:16

heu le code, je sait pa trop ce qu'il vaut, mais:

jbrek, tu a di "J'ai trouvé plus simple, moins long, et exactement pareil je crois..."

On est content de le savoir....et?? c'est trop dur de nous dire ou tu la trouvé??? enfin de nous faire partager ta découverte!! parceque la tu n'apporte rien de constructif!! tu ne di pas ce qui ne va pas, ne di pas ou ta trouvé mieu...
(bon, avec ce sport j'ai un peu fai pareil, mais bon..)

sinon, j'ai repris une parti de ce code la, et pr moi ca marche, mais bon, je c pa si l'ensemble fonctionne...
je cherchai juste un exemple pr pouvoir récupéré les différentes ips d'une machine.

Commentaire de tuguinou le 06/04/2005 16:00:00

je fais mex monfichiert.c dans matlab

mon erreur :

avec le compilateur Lcc C version 2.4 :

Specified export _mexFunction is not defined
Missing exports. Aborting

avec le compilateur Microsoft Visual C/C++ version 6.0 :

LINK : error LNK2001: unresolved external symbol mexFunction
_lib129.x : fatal error LNK1120: 1 unresolved externals
LINK : fatal error LNK1141: failure during build of exports file


Pouvez vous m'aider?
merci!

Commentaire de ADPro22 le 08/04/2005 16:48:14

Ben c'est une erreur lors de l'édition des liens (link) (cette question revient souvent...)

il te manque wsock32.lib ou assimilée lors du link.
donc il faut que tu trouves la bibiothèque qui va avec winsock.h (peut-etre qqch du genre winsock.lib winsock_32.lib ws2_32.lib ...) => regarde dans le dossier des librairies.
et puis tu mets le nom dans #pragma comment...

Commentaire de ADPro22 le 08/04/2005 16:50:42

euh, au temps pour moi... mais c'est quoi ce mexFunction ? il doit te manquer la librairie adéquate lors de l'édition des liens... (mais je ne la connais pas)

Commentaire de tuguinou le 09/04/2005 22:49:31

en fait il manquait l'en tete:
#include mex.h
et la routine passerelle

merci de votre aide!

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

rechercher une string dans un fichier sous windows [ par doudblast ] voilà : l'idée est de récuperer une ip dans un fichier txtpar contre cette ip ne sera pas toujours la même et ne sera pas toujours précisemment au mêm Détecter une perte de connexion en TCP/IP (Winsock) [ par LaTatadu91 ] Bonjour, Je développe une application client/serveur basé sur tcp/ip. j'utilise la DLL WinSock. Je voudrais savoir si il existe des fonctions afin d Routage basé sur le port de destination IP [ par Kotomine ] Bonjour bonjour ! J'ai établi un VPN OSI2 qui fonctionne assez bien (malgré le fait que pour diverses contraintes, je dois le faire passer par du TC Interrompre le trafic réseau sur windows [ par taggle ] Salut, je voudrais savoir si c'était possible de stopper/brider volontairement le trafic réseau de ma machine en C++ de manière simple. J'imagine qu Comment creer un exe autonome en managed C++ + Windows::form [ par vfabula ] Bonhour, Ma question est la suivante: Comment créer un exe independant pouvant être éxecuté sur une autre machine, sachant que cet exe est programm IP Manager [ par Elixyr ] Bonjour a tous, Alors voila: en fait je suis en train de faire un "IP Manager"... fenetre qui permet d'afficher son Adresse IP en un clic... ca c'est Dll g++ sous VS [ par greenzephyr ] Salut à tous, Je dois faire une appli Windows Form qui utilise une dll compilée sous Linux avec g++. Je dispose des sources de cette dll. Pour vous cree une dll en visual c++ express pour vba [ par assireme81 ] salut tout le monde c'est la premiere fois que j'utilise ce forum donc je ne sais pas comment ca marche vrement voila mon probleme je veux creer une Driver de manette de jeu virtuelle [ par Kotomine ] Bonjour, Hum .. je n'ai jamais codé de driver windows et je n'ai aucune idée de comment m'y prendre. (J'aimerais le faire sur du winXP SP3) A long t Winsock demande d'aide [ par soliphied ] Bonjours, Je suis étudiant en c++ a distance et je chercherais quelqu'un qui pourais m'enseigner sur la lib winsock et divers autre chose sur le c++


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 3,292 sec (3)

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