您的位置:首页 > 理论基础

基于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)。

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和名称已经完成。

在运行时可能会遇到类型无法转换的问题,这个情况不用着急,解决步骤如下:

点击菜单栏里的《项目》按钮——>在下拉菜单栏中点击《***属性》——>点击左侧的《配置属性》——>在右侧找到《字符集》——>点击下拉菜单,选择《使用多字节字符集》。这样就好了!配图如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息