반응형
자신의 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 |