基于VS2013 MFC获取计算机的IP和名称
2016-09-11 08:33
375 查看
今天要介绍的是如何获取本机的IP和名称,这个功能在做TCP通信时变得更为重要。
第一步:打开VS2013,新建项目,创建MFC应用程序,选择对话框,点击完成。
第二步:在对话框中放置两个Edit Control控件,一个用来显示IP,另一个用来显示计算机名称。如下图:
为了更好的区分两个控件,将他们的ID分别改成:IDC_EDIT_IP_LOCAL和IDC_EDIT_HOST_NAME
(接下来开始代码的书写了)
第三步:在***Dlg.h文件中定义两个字符串变量,并且声明获取计算机名称和IP的函数GetLocalHostIPName(CString &sLocalName, CString &sIpAddress)。
第四步:在***Dlg.cpp文件中定义函数GetLocalHostIPName(CString &sLocalName, CString &sIpAddress)。
第五步:在***Dlg.cpp的OnInitDialog()方法中调用GetLocalHostIPName(CString &sLocalName,CString &sIpAddress)函数,并将结果显示在Edit Control控件中
GetLocalHostIPName(m_strLocalName,m_strLocalIP);//调用函数获得IP和计算机名称
SetDlgItemText(IDC_EDIT_IP_LOCAL, m_strLocalIP);//将计算机的IP显示在IP控件中
SetDlgItemText(IDC_EDIT_HOST_NAME, m_strLocalName);//将计算机的名称显示在名称控件中
至此,基于vs2013 MFC获得计算机的IP和名称已经完成。
在运行时可能会遇到类型无法转换的问题,这个情况不用着急,解决步骤如下:
点击菜单栏里的《项目》按钮——>在下拉菜单栏中点击《***属性》——>点击左侧的《配置属性》——>在右侧找到《字符集》——>点击下拉菜单,选择《使用多字节字符集》。这样就好了!配图如下:
第一步:打开VS2013,新建项目,创建MFC应用程序,选择对话框,点击完成。
第二步:在对话框中放置两个Edit Control控件,一个用来显示IP,另一个用来显示计算机名称。如下图:
为了更好的区分两个控件,将他们的ID分别改成:IDC_EDIT_IP_LOCAL和IDC_EDIT_HOST_NAME
(接下来开始代码的书写了)
第三步:在***Dlg.h文件中定义两个字符串变量,并且声明获取计算机名称和IP的函数GetLocalHostIPName(CString &sLocalName, CString &sIpAddress)。
CString m_strLocalIP; //本机计算机IP CString m_strLocalName; //本机计算机名 int GetLocalHostIPName(CString &sLocalName, CString &sIpAddress); //获取本机名称IP
第四步:在***Dlg.cpp文件中定义函数GetLocalHostIPName(CString &sLocalName, CString &sIpAddress)。
int CMFCApplication1Dlg::GetLocalHostIPName(CString &sLocalName,CString &sIpAddress) { char szLocalName[256];//定义 WSADATA wsaData;//定义套接字存储变量 if (WSAStartup(MAKEWORD(2, 0), &wsaData) == 0)//<span class="con">windows初始化socket网络库,申请2,0的版本,windows socket编程必<img class="selectsearch-hide" id="selectsearch-icon" alt="搜索" src="http://img.baidu.com/img/iknow/qb/select-search.png" />须先初始化。如果出错,则返回0</span> { if (gethostname(szLocalName, sizeof(szLocalName)) != 0)//产生错误 { sLocalName = _T("没有取得"); WSACleanup(); return GetLastError(); } else { sLocalName = szLocalName;//用sLocalName变量存储获得的计算机名称 struct hostent FAR * lpHostEnt = gethostbyname(sLocalName); if (lpHostEnt == NULL)//错误 { sIpAddress = _T(""); WSACleanup(); return GetLastError(); } LPSTR lpAddr = lpHostEnt->h_addr_list[0];//获取IP地址 if (lpAddr) { struct in_addr inAddr; memmove(&inAddr, lpAddr, 4); sIpAddress = inet_ntoa(inAddr);//转换为标准格式 if (sIpAddress.IsEmpty()) { sIpAddress = _T("没有取得"); WSACleanup(); return 1; } } } } WSACleanup();//清空套接字初始化变量 return 0; }
第五步:在***Dlg.cpp的OnInitDialog()方法中调用GetLocalHostIPName(CString &sLocalName,CString &sIpAddress)函数,并将结果显示在Edit Control控件中
GetLocalHostIPName(m_strLocalName,m_strLocalIP);//调用函数获得IP和计算机名称
SetDlgItemText(IDC_EDIT_IP_LOCAL, m_strLocalIP);//将计算机的IP显示在IP控件中
SetDlgItemText(IDC_EDIT_HOST_NAME, m_strLocalName);//将计算机的名称显示在名称控件中
至此,基于vs2013 MFC获得计算机的IP和名称已经完成。
在运行时可能会遇到类型无法转换的问题,这个情况不用着急,解决步骤如下:
点击菜单栏里的《项目》按钮——>在下拉菜单栏中点击《***属性》——>点击左侧的《配置属性》——>在右侧找到《字符集》——>点击下拉菜单,选择《使用多字节字符集》。这样就好了!配图如下:
相关文章推荐
- 关于MFC在VS2013下获取本机IP地址
- Java获取计算机的名称、IP、环境变量的配置信息
- VS2013 MFC拖文件到对话框获取文件名(不包含后缀和路径)
- 基于VS2013MFC的JSON文件的写入和解析
- VS2013基于MFC的CMD调试窗口
- 计算机图形学-在VS2013下利用MFC实现OpenGL
- VS2013 MFC基于对话框编程(创建工程)
- JAVA获取计算机的IP、名称、操作系统等信息
- c#(WinForm)遍历局域网计算机(电脑)获取IP和计算机名称(转)
- 基于VS2013MFC左移显示效果
- MFC基于对话框框架的简易飞鸽系统(二)----获取局域网内运行同样程序的主机名和IP
- 获取局域网计算机名称和IP
- TrafficAssistSys——基于VS2013_MFC
- C++获取计算机主机信息(计算机名称、IP)
- 获取计算机名称,IP,MAC地址
- c# 遍历局域网计算机(电脑)获取IP和计算机名称
- c#(WinForm)遍历局域网计算机(电脑)获取IP和计算机名称
- VS2013的MFC,获取程序的句柄
- 基于VS2013 MFC的OPENCV3.1环境构建及测试
- VS2013/MFC基于对话框编程: [1]创建MFC工程