반응형
자신의 IP를 확인하는 방법입니다.
이전에 작성한 코드인데 Visual Studio 2012에서는 다음과 같은 코드를 맨 위에 삽입해야 합니다.
#define _WINSOCK_DEPRECATED_NO_WARNINGS
Visual Studio 2010이나 그 이하 버전에는 사용하지 않아도 될 것 같습니다.
전체 코드는 다음과 같습니다.
IP가 여러 개 리턴될 수 있기 때문에 vector로 리턴을 하도록 하였습니다.
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include <iostream>
#include <string>
#include <vector>
#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib")
using std::cout;
using std::endl;
using std::string;
using std::vector;
vector<string> GetLocalIP()
{
vector<string> vMyIP;
string szMyIP = "";
char ac[80];
WSAData wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
{
return vMyIP;
}
if (gethostname(ac, sizeof(ac)) == SOCKET_ERROR)
{
WSACleanup();
return vMyIP;
}
struct hostent* phe = gethostbyname(ac);
if (phe == 0)
{
WSACleanup();
return vMyIP;
}
for (int i = 0; phe->h_addr_list[i] != 0; ++i)
{
struct in_addr addr;
memcpy(&addr, phe->h_addr_list[i], sizeof(struct in_addr));
szMyIP = inet_ntoa(addr);
vMyIP.push_back(szMyIP);
}
WSACleanup();
return vMyIP;
}
int main()
{
vector<string> vMyIPs = GetLocalIP();
for (auto szIP : vMyIPs)
{
cout << szIP << endl;
}
return 0;
}
필요한 형태에 맞게 수정해서 사용하시면 됩니다.
반응형
'Programming > Win32&MFC&COM' 카테고리의 다른 글
| 프로세스 목록 확인하기(작업 관리자) (0) | 2015.01.03 |
|---|---|
| API, MFC에서 사용하는 변수형 (0) | 2015.01.02 |
| MFC에서 프로그램의 hInstance와 hWnd 구하기 (0) | 2015.01.01 |
| 윈도우 리전(Region) 설정해서 윈도우 모양 바꾸기 (0) | 2014.12.31 |
| 다중 실행 방지 코드(CreateMutex) (0) | 2014.12.27 |