工控编程吧

标题: 上位机MFC如何获得本地计算机的IP地址 [打印本页]

作者: qq263946146    时间: 2019-8-8 09:32
标题: 上位机MFC如何获得本地计算机的IP地址
可以事先通过函数gethostname获得主机名。再使用主机名获得计算IP,调用函数gethostbyname就好。
下面是关键代码,可以在自己工程中测试。
  1. #include <Winsock2.h>
  2. #pragma comment (lib,"Ws2_32.lib")
  3. void CGkbc8Dlg::OnButton1()
  4. {
  5.         //初始化WinSock
  6.         WSADATA WSAData;
  7.         if (WSAStartup(MAKEWORD(2,0), &WSAData) != 0)
  8.         {
  9.                 return;
  10.         }
  11.        
  12.         //获得本地计算机主机名称
  13.         CString strName = _T("");
  14.         gethostname(strName.GetBuffer(1024), 1024);
  15.         strName.ReleaseBuffer();

  16.         //获得本地计算机信息
  17.         struct hostent* pHostEnt = gethostbyname(strName);
  18.         if (pHostEnt == NULL)
  19.         {
  20.                 return;
  21.         }

  22.         //获得本地计算机IP地址
  23.         CString strText = _T("");
  24.         strText += _T("本地计算机的IP地址:\n");
  25.         int n = 0;
  26.         while (pHostEnt->h_addr_list[n] != NULL)
  27.         {
  28.                 CString strTemp = _T("");
  29.                 strTemp.Format(_T("%d.%d.%d.%d\n"),
  30.                 (pHostEnt->h_addr_list[n][0] & 0x00FF),
  31.                 (pHostEnt->h_addr_list[n][1] & 0x00FF),
  32.                 (pHostEnt->h_addr_list[n][2] & 0x00FF),
  33.                 (pHostEnt->h_addr_list[n][3] & 0x00FF));
  34.                 strText += strTemp;
  35.                 n++;
  36.         }
  37.         AfxMessageBox(strText);

  38.         //清理WinSock
  39.         WSACleanup();               
  40. }
复制代码

[MFC408]1[/MFC408][weixinlianxi]1[/weixinlianxi]







欢迎光临 工控编程吧 (https://www.gkbc8.com/) Powered by Discuz! X3.4