Récupérer son ip (borland cpp)

0/5 (27 avis)

Snippet vu 19 156 fois - Téléchargée 39 fois

Contenu du snippet

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

Source / Exemple :


#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.

A voir également

Ajouter un commentaire Commentaires
tuguinou Messages postés 2 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 9 avril 2005
9 avril 2005 à 22:49
en fait il manquait l'en tete:
#include mex.h
et la routine passerelle

merci de votre aide!
ADPro22 Messages postés 126 Date d'inscription mercredi 18 juillet 2001 Statut Membre Dernière intervention 27 octobre 2004
8 avril 2005 à 16:50
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)
ADPro22 Messages postés 126 Date d'inscription mercredi 18 juillet 2001 Statut Membre Dernière intervention 27 octobre 2004
8 avril 2005 à 16:48
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...
tuguinou Messages postés 2 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 9 avril 2005
6 avril 2005 à 16: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!
cleter Messages postés 92 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 15 mai 2006
17 mars 2005 à 17:10
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.
Afficher les 27 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.