gethostname和gethostbyname
通过gethostname和gethostbyname两个函数来实现获取主机名和IP地址的功能。
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
int main(int argc, char **argv)
{
char hostname[32];
struct hostent *host;
// char* ip;
int x = 0;
WORD sockVersion = MAKEWORD(2, 2);
WSADATA wsaData;
if (WSAStartup(sockVersion, &wsaData) != 0){
return 0;
}
if( gethostname(hostname,sizeof(hostname)) ){
printf("gethostname calling error\n");
return -1;
}
if((host = gethostbyname(hostname)) == NULL){
printf("gethostbyname erorr!\n");
return 0;
}
printf("localhost name:%s\n",hostname);
// ip = inet_ntoa(*(struct in_addr* ) *hp->h_addr_list);
// printf("IP :%s\n",ip);
printf("IP列表: \n");
for (x = 0; ; x++){
printf("IP:[%d][%s]\n", x, inet_ntoa(*((struct in_addr *)host->h_addr_list[x])));
if (host->h_addr_list[x] + host->h_length >= host->h_name){
break;
}
}
return 0;
}