使用gethostname()和gethostbyname()获取IP地址和计算机名,记录一下,省得老忘。
int CNetTestDlg::GetLocalHostName( CString& sHostName ) // 获取机器名
{
char szHostName[256];
int nRetCode;
nRetCode = gethostname(szHostName, sizeof(szHostName));
if (nRetCode != 0)
{
memcpy(szHostName, ("Not Available"), sizeof("Not Available"));
return WSAGetLastError();
}
sHostName = szHostName;
return 0;
}
int CNetTestDlg::GetIPAddress(const CString& sHostName, CString& sIPAddress) // 获取IP地址
{
struct hostent *lpHostEnt = gethostbyname(sHostName);
if (lpHostEnt == NULL)
{
sIPAddress = "";
return WSAGetLastError();
}
LPSTR lpAddr = lpHostEnt->h_addr;
if (lpAddr)
{
struct in_addr inAddr;
memmove(&inAddr, lpAddr, 4); // 将地址进行转换成常规形式
sIPAddress = inet_ntoa(inAddr);
if (sIPAddress.IsEmpty())
{
sIPAddress = "Not available";
}
}
return 0;
}