ZedMaTrix
Messages postés178Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention14 août 2008
-
10 mars 2006 à 02:29
cs_satellite34
Messages postés688Date d'inscriptionmercredi 6 avril 2005StatutMembreDerniè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 !
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDerniè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
ZedMaTrix
Messages postés178Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention14 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 !!
cs_satellite34
Messages postés688Date d'inscriptionmercredi 6 avril 2005StatutMembreDernière intervention 2 juin 20061 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