🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #7374

Re: ¿Cómo puedo obtener mis IPs en Linux?

#7374
From: Mikel Irazabal
Date: Tue, 04 Mar 2003 09:17
54 lines
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-mail
References: <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>