通过主机名获得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();
//初始化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();