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.
9 avril 2005 à 22:49
#include mex.h
et la routine passerelle
merci de votre aide!
8 avril 2005 à 16:50
8 avril 2005 à 16:48
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...
6 avril 2005 à 16:00
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!
17 mars 2005 à 17:10
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.
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.