Article View: es.comp.os.linux.programacion
Article #7374Re: ¿Cómo puedo obtener mis IPs en Linux?
From: Mikel Irazabal
Date: Tue, 04 Mar 2003 09:17
Date: Tue, 04 Mar 2003 09:17
54 lines
2495 bytes
2495 bytes
Guido Reina wrote:
> Hola,
> �c�mo puedo obtener mis direcciones IP desde un programa en C bajo Linux?
Se hace mediante la funci�n 'ioctl'.
Por ejemplo obtenemos la direcci�n de 'eth0' mediante el siguiente c�digo:
-------8<-------- Corta aqu� ----------------
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <net/if.h>
#include <netdb.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main(void)
{
struct ifreq ifr;
struct sockaddr_in *sin = (struct sockaddr_in *)&ifr.ifr_addr;
int sockfd, i;
bzero(&ifr, sizeof(ifr));
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
perror("socket()");
return(-1);
}
// Pon el nombre de la interfaz cuya direcci�n
// quieras en la siguiente l�nea en el lugar de 'eth0'
strcpy(ifr.ifr_name, "eth0");
sin->sin_family = AF_INET;
if(ioctl(sockfd, SIOCGIFADDR, &ifr) == 0)
{
printf("\n%s : [%s]\n", ifr.ifr_name, inet_ntoa(sin->sin_addr));
}
}
---------8<--------- Corta aqu� -------------
Ten en cuenta que tienes que decir la direcci�n de que interfaz quieres,
ioctl
tambi�n sirve para obtener una lista de los interfaces que hay en tu
m�quina.
Technical Details
Message-ID:
<b41qt7$1r1903$1@ID-172074.news.dfncis.de>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!headwall.stanford.edu!fu-berlin.de!uni-berlin.de!eu100-132.clientes.euskaltel.ES!not-for-mailReferences:
<b3o297$drp$1@nsnmrro2-gest.nuria.telefonica-data.net>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,ebd42d1b7f196397 X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2003-03-04 01:16:25 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!headwall.stanford.edu!fu-berlin.de!uni-berlin.de!eu100-132.clientes.euskaltel.ES!not-for-mail From: Mikel Irazabal <m_irazabal@yahoo.es> Newsgroups: es.comp.os.linux.programacion Subject: Re: ¿Cómo puedo obtener mis IPs en Linux? Date: Tue, 04 Mar 2003 10:17:37 +0100 Lines: 62 Message-ID: <b41qt7$1r1903$1@ID-172074.news.dfncis.de> References: <b3o297$drp$1@nsnmrro2-gest.nuria.telefonica-data.net> NNTP-Posting-Host: eu100-132.clientes.euskaltel.es (212.8.100.132) Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-Trace: fu-berlin.de 1046769383 61907971 212.8.100.132 (16 [172074]) User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.2.1) Gecko/20030205 X-Accept-Language: eu, es, en, fr, de In-Reply-To: <b3o297$drp$1@nsnmrro2-gest.nuria.telefonica-data.net>