Programming/Win32&MFC&COM
자신의 IP를 확인하기
psychoria
2014. 12. 23. 19:00
반응형
자신의 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;
}
필요한 형태에 맞게 수정해서 사용하시면 됩니다.
반응형