使用gethostname()和gethostbyname()获取IP地址和计算机名

 使用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;
}

你可能感兴趣的:(VC)