ifconfig를 이용해 간단한 쉘 스크립트로 가져 올 수도 있을거 같은데
C 를 이용해 보려 합니다.
ip 반환 함수가 있다면 간단히 기술 좀 해주세요.
인터페이스에 따른 IP가 아닌 그냥 전체 IP를 구하시려면 단순 소켓함수로 구할 수 있죠... 각 함수는 man페이지 참조하시구요...
gethostname()으로 일단 자기 컴퓨터 이름을 얻으시고요... 그 다음 gethostbyname()으로 IP를 얻어오는 방법이 있습니다.
#include <net/if.h> #include <sys/socket.h> #include <stropts.h> #ifdef OS_LINUX #include <linux/sockios.h> #endif #ifdef OS_SOLARIS #include <sys/sockio.h> #endif #define MAX_NIC 10 static char * get_ipaddr(void) { int i, fd; int numif; static char ip[INET_ADDRSTRLEN]; struct ifconf ifc; struct ifreq ifr[MAX_NIC]; struct in_addr addr; ifc.ifc_len = sizeof(ifr); ifc.ifc_ifcu.ifcu_req = ifr; if((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { return NULL; } if(ioctl(fd, SIOCGIFCONF, &ifc) < 0) { return NULL; } close(fd); numif = ifc.ifc_len / sizeof(struct ifreq); for(i = 0; i < numif; i++) { if(ifc.ifc_ifcu.ifcu_req[i].ifr_ifru.ifru_addr.sa_family != AF_INET) { continue; } addr = ((struct sockaddr_in *) &ifc.ifc_ifcu.ifcu_req[i].ifr_ifru.ifru_addr)->sin_addr; if(addr.s_addr == htonl(0x7f000001)) { /* 127.0.0.1 */ continue; } strcpy(ip, inet_ntoa(addr)); return ip; } return NULL; }
127.0.0.1을 제외한 나머지 IP 중에 하나를 리턴하는 함수 입니다. 소스를 조금만 고치면 모든 NIC의 IP 확인도 가능합니다.
====================== BLOG : http://superkkt.com
감사합니다. 땡큐~
장태산 멋진남
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
인터페이스에 따른
인터페이스에 따른 IP가 아닌 그냥 전체 IP를 구하시려면 단순 소켓함수로 구할 수 있죠...
각 함수는 man페이지 참조하시구요...
gethostname()으로 일단 자기 컴퓨터 이름을 얻으시고요...
그 다음 gethostbyname()으로 IP를 얻어오는 방법이 있습니다.
#include <net/if.h> #include
127.0.0.1을 제외한 나머지 IP 중에 하나를 리턴하는 함수 입니다. 소스를 조금만 고치면 모든 NIC의 IP 확인도 가능합니다.
======================
BLOG : http://superkkt.com
======================
BLOG : http://superkkt.com
감사합니다. 땡큐~
감사합니다. 땡큐~
장태산 멋진남
댓글 달기