获取本机IP地址和主机名

 1 #include <stdio.h>
 2 #include <WinSock2.h>
 3 #pragma comment(lib, "ws2_32.lib")
 4 
 5 int main(int argc, char **argv)
 6 {
 7     WSADATA wsaData;
 8     WORD    wVersion = MAKEWORD(2, 2);
 9     if(::WSAStartup(wVersion, &wsaData) != 0)       //初始化套接字库
10     {
11         printf("Initialize the socket failed\n");
12         return 0;
13     }
14 
15     char szHostName[256];
16     ::gethostname(szHostName, sizeof(szHostName)); //获取主机名
17     printf("主机名:%s\n", szHostName);
18 
19     hostent *pHost = ::gethostbyname(szHostName);  //通过主机名获取IP
20 
21     //打印出所有的IP地址
22     in_addr addr;
23     for(int i = 0; ; i++)
24     {
25         char *p = pHost->h_addr_list[i];
26         if(p == NULL)
27             break;
28 
29         memcpy(&addr.S_un.S_addr, p, pHost->h_length);
30         char *szIp = ::inet_ntoa(addr);
31 
32         printf("本机IP地址:%s\n", szIp);
33     }
34 
35     return 0;
36 }

 

 

posted @ 2013-05-21 09:13  Dreamcaihao  阅读(304)  评论(0编辑  收藏  举报