본문 바로가기

MFC

[MFC] 내부IP, 외부IP가져오기

*내부 IP
//StdAfx.h에 선언
 #include "winsock2.h"
#pragma comment(lib, "WS2_32.lib")
#define DESIRED_WINSOCK_VERSION        0x0101
#define MINIMUM_WINSOCK_VERSION        0x0001

//선언 끝
//함수구현 
CString GetInIpAddress()
{
WSADATA wsadata;
CString strIP; // 이 변수에 IP주소가 저장된다.
strIP = "";

if( !WSAStartup( DESIRED_WINSOCK_VERSION, &wsadata ) )
{
if( wsadata.wVersion >= MINIMUM_WINSOCK_VERSION )
{
HOSTENT *p_host_info;
IN_ADDR in;
char host_name[128]={0, };

gethostname(host_name, 128);
p_host_info = gethostbyname( host_name );

if( p_host_info != NULL )
{
for( int i = 0; p_host_info->h_addr_list[i]; i++ )
{
memcpy( &in, p_host_info->h_addr_list[i], 4 );
strIP = inet_ntoa( in );
}
}
}
WSACleanup();
}
return strIP;
}



*외부 IP
#include <afxsock.h>
 
//함수구현   
CString GetIpAddress()
{
WORD wVersionRequested;
WSADATA wsaData;
char name[255];
PHOSTENT hostinfo;
CString strIpAddress = _T("");
wVersionRequested = MAKEWORD(2, 0);

if(WSAStartup(wVersionRequested, &wsaData) == 0)
{
if(gethostname(name, sizeof(name)) == 0)
{
if((hostinfo = gethostbyname(name)) != NULL)
strIpAddress = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
WSACleanup();
}
return strIpAddress;
}

'MFC' 카테고리의 다른 글

[MFC] abs() 함수  (0) 2012.01.18
Win32 API 주요 함수  (0) 2012.01.16
[MFC] 파일에 사용한 한글이 깨질때..  (0) 2011.12.15
MFC 네트워크 드라이버 연결  (0) 2011.12.07
예약작업실행  (0) 2011.12.05