#include "Winsock2.h " #pragma comment(lib, "Ws2_32.lib") /// 注意字符串需以\0结尾 。 例如:lpzSeverName = " www.baidu.com/0"; bool WINAPI Domain2IP(char* lpzSeverName, TString & strIp) { if (!lpzSeverName)return false; WORD wVersionRequested = MAKEWORD(1, 1); WSADATA wsaData; ZeroMemory(&wsaData, sizeof(wsaData)); WSAStartup(wVersionRequested, &wsaData); hostent* pHostent = gethostbyname(lpzSeverName); sockaddr_in sa; ZeroMemory(&sa, sizeof(sa)); memcpy(&sa.sin_addr.s_addr,pHostent-> h_addr_list[0],pHostent-> h_length); std::string strTemp = inet_ntoa(sa.sin_addr);//IP WSACleanup(); TCHAR* lpzResult = NULL ; if (!strTemp.c_str())return false; int nLen = 0; #ifdef UNICODE nLen = ::MultiByteToWideChar(CP_ACP, 0, strTemp.c_str(), -1, NULL, 0); //include '\0' lpzResult = new wchar_t [nLen]; ::MultiByteToWideChar(CP_ACP, 0, strTemp.c_str(), -1, lpzResult, nLen); #else nLen = strlen(lpzByte); lpzResult = new char[nLen + 1]; StringCbCopy(lpzResult, nLen + 1, strTemp.c_str()); #endif strIp = lpzResult; SAFE_DELETE(lpzResult); return true; }