begin process at 2010 02 10 11:34:01
  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 :16 177

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 TIM_RESEAU, CLASSES POUR RESEAU COMPLET par williamallas
Source avec Zip INTERNET IP FINDER TROUVER VOS ADRESSE IP (INTERNET) par xmustapha
Source avec Zip CLIENT/SERVEUR AVEC TSOCKETSERVER & TCLIENTSOCKET par xmustapha
Source avec Zip REMOTE SHELL GEN par ganjarasta
PROXY IRC SIMPLE (WINDOWS/WINSOCK) par _michel

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CRYPTEUR-DÉCRYPTEUR-IP par antho974
EXPLORATEUR DE FICHIERS WINDOWS EN C par wildhawk
Source avec Zip Source avec une capture CLASSE GRAPH: GESTION DES GRAPHIQUES DANS LES APPLICATIONS W... par Pistol_Pete
Source avec Zip MINICHAT CLIENT SERVEUR DANS LAN par bboy0303
Source avec Zip [SDL/C++] JEU SIMPLE POUR COMMENCER DANS LA PROGRAMMATION DE... par marmous

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 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 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 Choix de librairie audio [ par zeboss31 ] Bonjour à tous, donc je viens vers vous pour avoir un avis concernant l'utilisation de librairie audio en c/c++. je dois migrer une application de com Convertisseur RS232 vers IP [ par kenza1987 ] [b]Bonjour à tous,[/b] J'appelle au secours ... Je suis entrain d'essayer de trouver comment convertir RS232 vers IP ... J'ai cherché sur tout le for Changer son adresse IP (sans redémarrer et sous XP/Seven) [ par ledaziarn ] Bonjour a tous, Mon problème parait simple mais je n’aie pas trouvé de réponse, en tout cas pas qui répondent a ma problématique Pour simplifier l 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


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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

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