³×Æ®¿öÅ© ÀÎÅÍÆäÀ̽º Á¤º¸ ¾ò±â
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : Code>C>ifinfo



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

¼³¸í

¹Ì¿Ï¼º

»ç¿ë¹æ¹ý


ÄÚµå

¹Ì¿Ï¼º ÄÚµåÀÓ
#include <sys/ioctl.h> 
#include <sys/types.h> 
#include <sys/stat.h> 
#include <sys/socket.h> 
#include <unistd.h> 
#include <netinet/in.h> 
#include <arpa/inet.h> 
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <net/if.h> 
 
#include <arpa/inet.h> 
 
typedef struct _ifinfo 
{ 
    struct sockaddr_in *sin; 
    char ifname[40]; 
    int  fd;     
    struct ifreq *ifr; 
    struct ifconf ifcfg; 
    int  ifnum; 
} IF;  
 
IF  *ifopen(); 
IF  *ifget(IF *); 
int ifclose(IF *); 
 
IF *ifopen() 
{ 
    struct sockaddr_in *sin; 
    int numreqs = 30; 
    IF *LIF; 
 
    LIF = (IF *)malloc(sizeof(&LIF)); 
    memset((void *)LIF, 0x00,sizeof(&LIF)); 
 
    LIF->fd = socket(AF_INET, SOCK_DGRAM, 0); 
 
    memset(&ifcfg, 0, sizeof(ifcfg)); 
    ifcfg.ifc_buf = NULL; 
    ifcfg.ifc_len = sizeof(struct ifreq) * numreqs; 
    ifcfg.ifc_buf = malloc(ifcfg.ifc_len); 
    ifcfg.ifc_len = sizeof(struct ifreq) * numreqs; 
    ifcfg.ifc_buf = realloc(ifcfg.ifc_buf, ifcfg.ifc_len); 
    if (ioctl(LIF->fd, SIOCGIFCONF, (char *)&ifcfg) < 0) 
    { 
        perror("SIOCGIFCONF "); 
        return (IF *)NULL; 
    } 
    //printf("%d : %d \n", ifcfg.ifc_len, sizeof(struct ifreq)); 
    LIF->ifr = ifcfg.ifc_req; 
    return LIF; 
} 
 
IF *ifget(IF *AIF) 
{ 
    if (AIF->ifnum > 0) 
    { 
        AIF->ifr++; 
    } 
    if (AIF->ifnum < AIF->ifr.ifc_len) 
    { 
        AIF->ifnum += sizeof(struct ifreq); 
        strncpy(AIF->ifname, AIF->ifr->ifr_name, 40); 
        AIF->sin = (struct sockaddr_in *)&AIF->ifr->ifr_addr;  
        return AIF->ifr; 
    } 
    else 
        return (IF *)NULL; 
         
    /* 
    for (n = 0; n < ifcfg.ifc_len; n+= sizeof(struct ifreq)) 
    { 
        printf("%s\n", ifr->ifr_name); 
        sin = (struct sockaddr_in *)&ifr->ifr_addr; 
        printf("IP    %s\n", inet_ntoa(sin->sin_addr) ); 
        if ( (sin->sin_addr.s_addr) == INADDR_LOOPBACK) 
        { 
            printf("Loop Back\n"); 
        } 
     
        ioctl(fd,  SIOCGIFBRDADDR, (char *)ifr); 
        sin = (struct sockaddr_in *)&ifr->ifr_broadaddr; 
        printf("BROD  %s\n", inet_ntoa(sin->sin_addr)); 
 
        ioctl(fd, SIOCGIFNETMASK, (char *)ifr); 
        sin = (struct sockaddr_in *)&ifr->ifr_addr; 
        printf("MASK  %s\n", inet_ntoa(sin->sin_addr)); 
 
        ioctl(fd, SIOCGIFMTU, (char *)ifr); 
        printf("MTU   %d\n", ifr->ifr_mtu); 
 
        ioctl(fd, SIOCGIFINDEX, (char *)ifr); 
        printf("BAND  %d %d\n", ifr->ifr_ifindex, ifr->ifr_bandwidth); 
 
        printf("\n"); 
        ifr++; 
    } 
    */ 
} 
 
int infget(IF *AIF) 
{ 
    close(AIF->fd); 
    free(AIF); 
} 
 
int main() 
{ 
    IF *ifp; 
 
    ifp = ifopen(); 
    if (ifp == NULL) 
    { 
        perror("error "); 
    } 
    while((ifp = ifget(ifp)) != NULL) 
    { 
        printf("GET GET\n"); 
    } 
} 
 

º¯°æ»çÇ×


2004/01/08


³«¼­

  • PointToPoint(ADSL) ¿¡¼­´Â ÀÚ½ÅÀÇ IP¿Í ¹ÝÇâµÇ´Â IP°¡ Àִµ¥ ÀÌ ¹ÝÇâµÇ´Â IP¸¦ ¾òÀ¸·Á¸é SIOCGIFDSTADDR À» »ç¿ëÇϼ¼¿ä. ¶ÇÇÑ IIf °¡ DOWNµÇ¾úÀ»¶§ (IP°¡ ¾øÀ»¶§) À§ÀÇ ¹æ¹ýÀ¸·Î´Â ÇØ´ç IP°¡ °ËÃâÀÌ ¾ÈµÉ°ÍÀ¸·Î º¸ÀÔ´Ï´Ù. ±×·¡¼­ Á¦°¡ °í¾ÈÇÑ ¹æ¹ýÀº /proc/net/route¿Í /proc/net/dev ¸¦ Á¾ÇÕ °Ë»öÇÏ´Â ºÎºÐÀÌ ÇÊ¿äÇÒ°ÍÀ¸·Î ÆÇ´ÜÇϰí ÀÖ½À´Ï´Ù. Ȥ½Ã ´Ù¸¥ ºÐµéÀº ¾î¶»°Ô »ý°¢Çϰí ÀÖÀ»±î¿ä? minzkn
    • À½.. IIF°¡ ´Ù¿îµÇ¾úÀ» °æ¿ì´Â.. »ý°¢ÇÏÁö ¾Ê¾Æµµ °ü°è¾øÀ»°Í °°´Ù´Â »ý°¢ÀÌ.. ifconfig °°Àº °æ¿ì¿¡µµ IIF°¡ ´Ù¿îµÇ¾î ÀÖÀ» °æ¿ì¿¡´Â Á¤º¸¸¦ Ãâ·ÂÇÏÁö ¾ÊÀ¸´Ï.. SIOCGIFDSTADDRÀÇ »ç¿ëÀº ÁÁÀº Á¤º¸±º¿ä.. Çѹø Å×½ºÆ® ÇØºÁ¾ß °Ú³×¿ä. ¾Æ È®½ÇÈ÷ ÇÏ·Á¸é /proc/net/route µîÀÇ Á¤º¸¸¦ Ȱ¿ëÇÏ´Â °Íµµ ÁÁ°Ú±º¿ä. yundream
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.