windows C++获得本地IP地址

#include <iostream> 
#include <Winsock2.h> 

using namespace std;

string GetLocalIpAddress()
{
	WORD wVersionRequested = MAKEWORD(2, 2);

	WSADATA wsaData;
	if (WSAStartup(wVersionRequested, &wsaData) != 0)
		return "";

	char local[255] = {0};
	gethostname(local, sizeof(local));
	hostent* ph = gethostbyname(local);
	if (ph == NULL)
		return "";

	in_addr addr;
	memcpy(&addr, ph->h_addr_list[0], sizeof(in_addr)); // 这里仅获取第一个ip

	string localIP;
	localIP.assign(inet_ntoa(addr));

	WSACleanup();
	return localIP;
}


void main()
{
	 char date[100];
	 strcpy (date, const_cast<char*>(GetLocalIpAddress().c_str()));
	 cout<<date<<endl;
	 system("PAUSE");
}

posted @ 2012-12-16 14:29  byfei  阅读(660)  评论(0编辑  收藏  举报