모뎀을 개발하는데.. 라우터 역활을 하거든요..
모뎀에 연결된 컴터들은 10.0.0.X 의 아이피를 가집니다.
모뎀이 받아온 공인 아이피를 매번 모뎀의 웹 셋팅 페이지에서
알아오는데..
연결된 컴터(아이피 10.0.0.X) 에서 알수 있는 방법이 없을까요?
연결된 컴터의 게이트웨이는 10.0.0.2 입니다.
답변 좀 해주세요.
이거원... ^^
그럼 즐거운 하루 되세요..
조기 아래 나와있던 소스입니다. 검색하시면 쉽게 찾을껍니다.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <sys/types.h> #include <sys/ioctl.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <stropts.h> #if defined(sun) #include <sys/sockio.h> #endif #include <net/if.h> #if defined(linux) #include <linux/sockios.h> #endif #define BUFFERSIZE 1024 const char * localip = "0.0.0.0"; const char * myip() { const int MAX_NIC = 10; struct ifconf ifc; struct ifreq ifr[MAX_NIC]; int s; int nNumIFs; int i; int count; int max=2; static char ip[BUFFERSIZE]; int cmd = SIOCGIFCONF; max++; ifc.ifc_len = sizeof ifr; ifc.ifc_ifcu.ifcu_req = ifr; if( (s=socket(AF_INET,SOCK_STREAM,0)) < 0) { perror("socket"); exit(1); } #if defined(_AIX) cmd = CSIOCGIFCONF; #endif if( (s = ioctl(s, cmd, &ifc) ) < 0) { perror("ioctl"); exit(1); } nNumIFs = ifc.ifc_len / sizeof ( struct ifreq ); count = 0; strcpy( ip, localip ); for( i=0; i<nNumIFs; i++ ) { struct in_addr addr; 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 ) ) { continue; } strcpy( ip, inet_ntoa( addr ) ); printf( "%s IP: %s\n", ifc.ifc_ifcu.ifcu_req[i].ifr_ifrn.ifrn_name, ip ); } return ip; } int main(void) { printf("One of my IP is %s\n", myip() ); return 0; }
H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!
텍스트 포맷에 대한 자세한 정보
<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]
음야... 아래에 나왔던 소스...
조기 아래 나와있던 소스입니다. 검색하시면 쉽게 찾을껍니다.
H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!
댓글 달기