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

 

posted on 2017-03-24 10:37  humbird  阅读(479)  评论(0编辑  收藏  举报

导航