[[프로그래밍_NOTE]]/Window Programing

자신의 IP를 알 수 있는 코드

갑빠돌격기 2008. 8. 2. 00:47

char* ReturnMyIpAddress()
{
 int                re;
 char             name[255], *ip = NULL;
 PHOSTENT   phostinfo;

 re = gethostname(name , sizeof(name));
 if(re == 0)
 {
  if((phostinfo = gethostbyname(name)) != NULL)
  {
   ip = inet_ntoa(*(struct in_addr *)*phostinfo->h_addr_list);
  }
 }
 return ip;
}

/*****************************************************************************
gethostbyname()함수를 호출하면 인터넷 주소를 리턴받을수 있는데,
문제는 이 함수가 리턴하는 주소가 우리가 알아볼 수 있는 포맷이 아니라는 것이다.
따라서 inet_nota()함수를 통해 문자열로 변환하고, 이 변환된 주소를 함수의 리턴 값으로
사용한다.
inet_ntoa() 함수는 inet_addr()함수와는 정반대의 역할을 수행한다.
****************************************************************************/

/*****************************************************************************
gethostname()
   설   명 : 로컬 머신의 호스트 네임을 알아낸다.
   원   형 : int gethostname(char FAR * name , int namelen);
   리턴값 : 성공하면 0을 리턴한다.

gethostbyname()
   설   명 : 정보를 알고 싶은 호스트의 이름을 인자로 주면,
               해당 호스트를 검색하여 발견할 경우 HOSTENT 구조체의 포인터를 리턴한다.
   원   형 : struct hostent FAR * gethostbyname(const char FAR * name);
   리턴값 : 성공하면 HOSTENT 구조체의 포인터를 리턴하고 , 실패하면 NULL을 리턴한다.
*********************************************************************************/