|
if(WSAStartup(MAKEWORD(2, 0), &wsaData) == 0)
{
phi = gethostbyname(strHostName);
if(phi != NULL)
{
ip = inet_ntoa(*(struct in_addr *)*phi->h_addr_list);
printf("%s\n\n",ip);
}
else
{
//error - refer to MSDN gethostbyname function
}
WSACleanup( );
}
else
{
//error
}
이렇게 실행할경우 현재 ip에 들어있는 주소의 아이피가 나옵니다.
문제는 공유기를 사용할때 발생합니다.
보통 ddns로 자기 컴퓨터의 외부아이피(인터넷아이피)를 지정하고
그 ddns주소로 ping을 치면 인터넷아이피(220.x.x.x 이런식으로)가 나옵니다.
하지만 공유기를 사용하면
ping을 치면 외부아이피가 아니라 자신의 내부아이피(192.168.0.1 이런식)가 나옵니다.
물론 공유기를 사용한다 하여도
다른사람들이 같은주소로 ping을 치면 인터넷아이피가 나옵니다.(정상적으로)
제가보기에는 ping 같은걸 쳐서 자기 인터넷아이피와 같으면 그 랜카드의 내부아이피를 우선 출력하게 하는것 같습니다.
gethostbyname도 역시 ping처럼 공유기를 사용하면 내부 아이피가 나와버립니다.
이걸 다른집에서 ping을 치는것처럼 원래정상으로(공유기 사용안할때처럼) 외부 아이피가 나오게 하는법이 없을까요?
참고로 c콘솔어플리케이션 입니다.
|