현재 사용중인 ip를 가져오는 방법에 대해 알아보도록 하자
방법은 간단하다 gethostbyname()함수를 사용하면 HOSTENT 구조체에 대한 포인터를 리턴하게 되어있다.
HOSTENT 의 구조체 내용을 보면 아래와 같은데
struct hostent { char FAR * h_name; char FAR * FAR * h_aliases; short h_addrtype; short h_length; char FAR * FAR * h_addr_list; };
뭐 위에 대한 구조체에 대한 정의는 인터넷 검색하면 금방나오므로 쉽게 알 수 있을 것이다.
뭐 대락적으로 보면 'h_addr_list에 주소값이 들어 있겠구나' 라고 감이 올것이다.
우선 저 함수를 사용하려면 호스트네임이 필요한데 그건 간단히 gethostname()함수를 쓰면 간단하게 호스트 이름을 얻어낼 수 있다.
자..그럼 현재 자신이 사용하고 있는 ip를 가져오는 소스를 보자면 아래와 같다.
#include <afxsock.h> //헤더파일 추가해주고~
CString GetCurrentIP()
{
WSADATA wsadata;
char szHostName[256] ={0,};
HOSTENT* pHostInfo;
CString sCurrentIP = "";
if( WSAStartup(MAKEWORD(2, 0) , &wsadata) == 0) //윈도우즈 소켓을 초기화 하는 함수.
//MAKEWORD(2,0)은 시스템상에서 윈속 버젼을 요청,
//제공되는 윈소켓중에서 호출자가 사용할 수 있는 최고 버전을 설정
{
if( gethostname(szHostName, sizeof szHostName ) == 0 ) //호스트이름을 가져오고
{
if( pHostInfo = gethostbyname(szHostName) )
{
if( pHostInfo ) //정보를 가져왔다면
{
sCurrentIP = inet_ntoa( *(struct in_addr*)*pHostInfo ->h_addr_list ) ;
//inet_ntoa()함수는 네트워크 바이트 순서(Network-byte order)의 바이너리 주소를 IP address로 변경
}
}
}
WSACleanup();
}
return sCurrentIP;
}
정보는 공유되어야 한다 쭈욱~~
'Study > MFC' 카테고리의 다른 글
자식창 움직이면 부모창도 같이 움직이게 하기 (0) | 2012.10.18 |
---|---|
Use MFC in a Shared DLL과 Use MFC in a Static Library (0) | 2012.08.27 |
post방식으로 웹페이지 열기 (0) | 2012.04.19 |
EditBox에서 우클릭 막기! (0) | 2012.04.07 |
webbrowser2 에서 캐쉬 사용를 않하는 방법 (0) | 2012.03.22 |
댓글