본문 바로가기
개발

Local PC의 IP 리스트 얻기

by 솜씨제이 2009. 4. 24.
Local PC의 IP를 얻기 위해서 WinSock의 gethostbyname을 사용하는 경우 "localhost"를 파라미터로 주면 원하는 실제 IP가 아닌 127.0.0.1이 나온다. PC의 실제 IP를 얻으려면 실제 호스트 이름을 사용해야 하는데 아래와 같은 방법으로 가능하다.

char hostname[512];
gethostname(hostname, 512);
hostent* host = gethostbyname(hostname);

또는 "localhost"로 gethostbyname을 하면 실제 호스트이름을 알 수 있기 때문에 아래처럼 할 수도 있다.

hostent* localhost = gethostbyname("localhost");
hostent* host = gethostbyname(localhost->h_name);

리턴된 hostent 값의 h_addr_list에서 원하는 IP 리스트를 얻을 수 있다.

for (int i = 0; host->h_addr_list[i]; i++)
{
    in_addr in;
    in.S_un.S_addr = *(ULONG*)host->h_addr_list[i];
    printf("ip %d = %s\n", i, inet_ntoa(in));
}

댓글