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));
}
'개발' 카테고리의 다른 글
Flex Builder로 AIR 어플리케이션 만들기 (1) | 2009.05.14 |
---|---|
IE 보호 모드에서 비보호 모드 프로세스 실행 (0) | 2009.05.13 |
VS2005로 IE8 프로세스 디버깅하기 (1) | 2009.04.02 |
IE8 설치 시 VS2005에서 발생하는 스크립트 에러 (0) | 2009.04.02 |
코드사인(codesign) 자동화 (0) | 2008.12.10 |
댓글