Afficher l'adresse IP Local en C

ZedMaTrix Messages postés 178 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 14 août 2008 - 10 mars 2006 à 02:29
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 - 10 mars 2006 à 14:24
Salut les codeurs !


Voila, je bosse en C en console sous linux, et j'ai besoin de récupérer
mon adresse IP Local ( 192.168.x.x ) et non pas mon adresse de
rebouclage ( ex : 127.0.0.1 ).



Ca fais un bout de temps que je cherche ... et en vain !



Tout les codes que je trouve m'affichent mon adresse de rebouclage.



Y a bien le fichier /etc/network/interfaces mais c'est valable que si le mec n'utilise pas de DHCP.



Donc je voulais savoir, si quelqu'un sais comment trouver l'ip réseau
local, ou même encore, lister TOUTES les ips de la machine. Aprés je
pourrais me démerder !



Merci a vous par avance


ZedMaTriX

4 réponses

cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
10 mars 2006 à 07:33
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
10 mars 2006 à 09:16
Jete un oeil dans mes sources, il y en a une qui traite des cartes réseaux et de leur adresse IP.
Sinon pour l'IP de Internet, cf inet_addr.
Si t'as besoin d'un exemple fais moi signe

Shell
0
ZedMaTrix Messages postés 178 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 14 août 2008
10 mars 2006 à 14:10
Merci pour vos réponses si rapide !!



Pour toi satellite34, ce code je l'ai déjà essayé.

Enffet le soucis, c'est que gethostbyname() me renvoie 127.0.0.1.

Il est imcapable de me sortir mon adresse Réseau.



Pour toi DeAtHCrAsH, j'ai regarde trés rapidement, car je vais aller au
lit maintenant .. et oui j'ai passé depuis hier soir à bosser sur
le Pc , et j'ai vue que c'est du C++.

Je pense que si tu m'as dis de regarder, c'est que ca doit être
faisable. ( j'ai déjà regardé des sources en C++, et je retrouve, le
même code qu'en C. ).

Donc je regarderai ce soir ton code en détail.



Ceci dis, si quelqu'un as un code en C testé sous linux ( sans
modification du hosts et qui marche même en DHCP ) je suis preneur !!

ZedMaTriX
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
10 mars 2006 à 14:24
bonjour,

pour ce code sur la faq du C, j'avais réussi a obtenir mon ip mais seulement en récupérant le nom de la machine avec l'API que j'utilise (wxWIDGETS ), je pense qu'il ya possibilité avec d'autres API mais c vrai que gethostname() retourne locahost si je me souvient bien;Arf, ca fait un moment et je n'ai pas une mémoire d'éléphant;

je viens de retrouver un vieux code qui a été compiulé sous linux :


#ifdef OS_LINUX


#include
<sys/socket.h>


#include


#include
<netdb.h>


#else


#include
<winsock2.h>


#endif


wxString ftp::PrintIp(wxString &HostName)


{



struct hostent *pHost;



struct in_addr **pAddr;



if((pHost = gethostbyname(HostName)) != NULL)


{



// parcourt des adresses IP



for (pAddr=(
struct in_addr **)pHost->h_addr_list; *pAddr; pAddr++)


{


wxString cIpAddr;


cIpAddr.Printf(
"%s", inet_ntoa(**pAddr));



return cIpAddr;


}


}



else


{



// echec de la resolution


wxString cEchec =
"Echec\n";



return cEchec;


}



return wxString::Format(
"%i", NULL);


}

Bien entendu, il est orienté wxWIDGETS mais le principal est la, a la place d'un wxString tu retourne un const char* et, comme indiqué plus haut le paramétre HostName est a récup avec l'API sinon, ca donne 127.0.0.1


Mais bon, vas voir la source de deathCrash, ce sera trés instructif à mon gout

@+;
satellite34
0
Rejoignez-nous