获得主机名和IP地址

通过主机名获得IP地址
//初始化WinSock
WSADATA WSAData;
if (WSAStartup(MAKEWORD(2,0), &WSAData) != 0)
{
return;
}

//获得本地计算机主机名称
CString strName = _T("");
gethostname(strName.GetBuffer(1024), 1024);
strName.ReleaseBuffer();


//获得本地计算机信息
struct hostent* pHostEnt = gethostbyname(strName);
if (pHostEnt == NULL)
{
return;
}


//获得本地计算机IP地址
CString strText = _T("");
strText += _T("本地计算机的IP地址:\n");
int n = 0;
while (pHostEnt->h_addr_list[n] != NULL)
{
CString strTemp = _T("");
strTemp.Format(_T("%d.%d.%d.%d\n"), 
(pHostEnt->h_addr_list[n][0] & 0x00FF),
(pHostEnt->h_addr_list[n][1] & 0x00FF),
(pHostEnt->h_addr_list[n][2] & 0x00FF),
(pHostEnt->h_addr_list[n][3] & 0x00FF));
strText += strTemp;
n++;
}
AfxMessageBox(strText);


//清理WinSock
WSACleanup();


通过IP地址获得主机名
//初始化WinSock
WSADATA WSAData;
if (WSAStartup(MAKEWORD(2,0), &WSAData) != 0)
{
return;
}


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


//获得主机信息
struct hostent* pHostEnt = gethostbyaddr((char*)Addr, 4, AF_INET);
if (pHostEnt == NULL)
{
return;
}


//获得主机名称
CString strText = _T("");
strText.Format(_T("%d.%d.%d.%d的主机名称:%s"),
Addr[0], 
Addr[1],
Addr[2], 
Addr[3],
pHostEnt->h_name);
AfxMessageBox(strText);

//清理WinSock
WSACleanup();



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值