#include <assert.h>
#include <iostream>
#include <tchar.h>
#include <WinSock2.h>
using namespace std;
#pragma comment(lib,"Ws2_32.lib")
#define HOSTNAME_LEN 256
void main(int argc,TCHAR*argv[])
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 )
{
WSACleanup( );
return;
}
char szHostName[HOSTNAME_LEN] = {0};
int nRet = gethostname(szHostName,HOSTNAME_LEN);
assert(0 == nRet);
cout<<"主机名称是:"<<szHostName<<endl;
HOSTENT *pHostInfo;
// unsigned long lAddr = inet_addr("84.137.88.0");
// unsigned long lAddr = inet_addr("127.0.0.1");
// unsigned long lAddr = inet_addr("123.103.14.237");
// in_addr inaddr; inaddr.s_addr = lAddr;
// pHostInfo = gethostbyaddr((char*)&inaddr,4,AF_INET);
//pHostInfo = gethostbyname("www.163.com");
pHostInfo = gethostbyname(szHostName);
assert(pHostInfo);
cout<<"主机全名是:"<<pHostInfo->h_name<<endl;
if(*pHostInfo->h_aliases)
cout<<"主机别名是:"<<*pHostInfo->h_aliases<<endl;
char **ppAddress;
switch (pHostInfo->h_addrtype)
{
case AF_INET:
case AF_INET6:
ppAddress = pHostInfo->h_addr_list;
for(;*ppAddress!=NULL;ppAddress++)
{
cout<<"主机IP是: "<<inet_ntoa(*(struct in_addr*)(*ppAddress))<<endl;
}
cout<<"主机第一个IP是: "<<inet_ntoa(*(struct in_addr*)(pHostInfo->h_addr_list[0]))<<endl;
break;
default:
cout<<"unknown address type"<<endl;
break;
}
WSACleanup( );
}
获取主机信息
最新推荐文章于 2024-09-15 18:25:31 发布