[완료] 자신의 PC에서 IP를 알고 싶은데..
글쓴이: nalrim / 작성시간: 목, 2007/03/01 - 7:37오후
다시 정리하면 사설 네트워크에 있는 일반유저가 192.168.. 이런 아이피가 아닌 ifconfig eth0 이라는 명령을 통해 inet addr: 부분에 찍히는 실제 아이피를 알고자 합니다.
hostname으로도 알수 없고 방법을 모르겠습니다.
* 일반유저 == 아파치 웹서버 (apache)
Forums:


다음의 코드를
다음의 코드를 사용해보세요. (리눅스에서만 될껍니다.)
그리고 ifconfig는 일반 사용자도 사용가능 합니다. 단지 설정만 할 수 없을뿐입니다.
#include <stdio.h> #include <string.h> #include <sys/socket.h> #include <sys/ioctl.h> #include <netinet/in.h> #include <net/if.h> int main(int argc, char ** argv) { int s; char *devname; struct ifreq ifr; unsigned char *sa_data; if (argc < 2) {return -1;} s = socket(AF_INET, SOCK_STREAM, 0); devname = argv[1]; if (s < 0) { return -1;} strcpy(ifr.ifr_name, devname); if (ioctl(s, SIOCGIFADDR, &ifr) < 0) {close(s);return -1;} sa_data = (unsigned char*) ifr.ifr_ifru.ifru_addr.sa_data; printf("device: %s ip:%d.%d.%d.%d\n", devname, sa_data[2], sa_data[3], sa_data[4], sa_data[5]); close(s); return 0; }----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러
멋집니다!
멋집니다! 감사합니다.
댓글 달기