SoloCodigo

Sistemas Operativos => GNU/Linux => Mensaje iniciado por: odp77 en Sábado 20 de Mayo de 2006, 02:46

Título: Funcion Para Saber La Ip
Publicado por: odp77 en Sábado 20 de Mayo de 2006, 02:46
hola, estoy en el desarrollo de un programa en c linux (gcc) y necesito una funcion (no con scripts) para saber la IP de la maquina en el que se esta ejecutando.

gracias y saludos.....   :hola:
Título: Re: Funcion Para Saber La Ip
Publicado por: su - en Sábado 20 de Mayo de 2006, 03:14
man ifconfig  ;)
http://www.lehman.cuny.edu/cgi-bin/man-cgi?ifconfig (http://www.lehman.cuny.edu/cgi-bin/man-cgi?ifconfig)
http://en.wikipedia.org/wiki/Ifconfig (http://en.wikipedia.org/wiki/Ifconfig)
Almacenas el retorno de la ejecucion de ifconfig y simplemente lo extraes.
Aunque, si el equipo es un servidor, con POSIX obtienes el nombre de la maquina y con Sockets combiertes el dns en ip.
 :hola:
Título: Re: Funcion Para Saber La Ip
Publicado por: Last Dragon en Martes 27 de Junio de 2006, 00:22
Mira, salvo que seas root esa información pudiera ser privilegiada sin embargo en el espacio de usuario los driver escriben su información en la carpeta /proc

La red esta en el directorio /proc/net

Ahí encontraras los archivos que emanan del kernel por ejemplo el comando route tiene toda la información de rutas

[root@lastdragon net]# cat route
Iface   Destination     Gateway         Flags   RefCnt  Use     Metric  Mask   M
TU      Window  IRTT
eth0    0000FEA9        00000000        0001    0       0       0       0000FFFF
0       0       0

eth0    0000A8C0        00000000        0001    0       0       0       0000FFFF
0       0       0

eth1    0000A8C0        00000000        0001    0       0       0       0000FFFF
0       0       0

eth2    0000007F        00000000        0001    0       0       0       000000FF
0       0       0

eth0    00000000        FE05A8C0        0003    0       0       0       00000000
0       0       0


Checa la ultima línea

 eth0    00000000        FE05A8C0        0003    0       0       0       00000000

La tercera columna dice FE05A8C0  en decimal es 254.5.168.192 que obviamente esta invertido a: 192.168.5.254

El lugar mas sano para obtener esa información es leyendo los archivos de /proa/net lee los demás archivos encontraras hasta mas info de la que solicitas como datos enviados, recibidos, etc, etc, etc,
Título: Re: Funcion Para Saber La Ip
Publicado por: su - en Martes 27 de Junio de 2006, 01:56
Buen punto.
Mira hay un comando que se llama netstat, te retorna la ip y usando inet_ntoa de socket, podes resolver el DNS  ;)