工控编程吧

标题: 上位机MFC如何通过IP地址获得主机名称 [打印本页]

作者: qq263946146    时间: 2019-8-8 09:46
标题: 上位机MFC如何通过IP地址获得主机名称
我们也可以通过 一个指定的IP获得主机的名称,主要通过函数gethostbyaddr实现。例如我们添加一个IP控件,关联变量m_ctrlAddr,就可以调用下面代码来测试

  1. void CGkbc8Dlg::OnButton2()
  2. {
  3.         //初始化WinSock
  4.         WSADATA WSAData;
  5.         if (WSAStartup(MAKEWORD(2,0), &WSAData) != 0)
  6.         {
  7.                 return;
  8.         }

  9.         //获得IP地址
  10.         UpdateData(TRUE);
  11.         if (m_ctrlAddr.IsBlank())
  12.         {
  13.                 AfxMessageBox(_T("IP地址不能为空。"));
  14.                 return;
  15.         }
  16.         BYTE Addr[4];
  17.         m_ctrlAddr.GetAddress(Addr[0], Addr[1], Addr[2], Addr[3]);

  18.         //获得主机信息
  19.         struct hostent* pHostEnt = gethostbyaddr((char*)Addr, 4, AF_INET);
  20.         if (pHostEnt == NULL)
  21.         {
  22.                 return;
  23.         }

  24.         //获得主机名称
  25.         CString strText = _T("");
  26.         strText.Format(_T("%d.%d.%d.%d的主机名称:%s"),
  27.                 Addr[0],
  28.                 Addr[1],
  29.                 Addr[2],
  30.                 Addr[3],
  31.                 pHostEnt->h_name);
  32.         AfxMessageBox(strText);       
  33.        
  34.         //清理WinSock
  35.         WSACleanup();               
  36. }
复制代码
(, 下载次数: 0)