获取本机IP地址

 1 //initsock.h
 2 #include <winsock2.h>
 3 #pragma comment(lib, "WS2_32")    // 链接到WS2_32.lib
 4 
 5 class CInitSock        
 6 {
 7 public:
 8     CInitSock(BYTE minorVer = 2, BYTE majorVer = 2)
 9     {
10         // 初始化WS2_32.dll
11         WSADATA wsaData;
12         WORD sockVersion = MAKEWORD(minorVer, majorVer);
13         if(::WSAStartup(sockVersion, &wsaData) != 0)
14         {
15             exit(0);
16         }
17     }
18     ~CInitSock()
19     {    
20         ::WSACleanup();    
21     }
22 };
 1 //////////////////////////////////////////////////
 2 // GetAllIps.cpp文件
 3 
 4 
 5 #include "InitSock.h"
 6 
 7 
 8 #include <stdio.h>
 9 CInitSock initSock;        // 初始化Winsock库
10 
11 void main()
12 {
13     char szHost[256];
14     // 取得本地主机名称
15     ::gethostname(szHost, 256);
16     // 通过主机名得到地址信息
17     hostent *pHost = ::gethostbyname(szHost);
18     // 打印出所有IP地址
19     in_addr addr;
20     for(int i = 0; ; i++)
21     {
22         char *p = pHost->h_addr_list[i];
23         if(p == NULL)
24             break;
25 
26         memcpy(&addr.S_un.S_addr, p, pHost->h_length);
27         char *szIp = ::inet_ntoa(addr);
28         printf(" 本机IP地址:%s  \n ", szIp);
29     }
30 }

posted on 2012-05-03 21:38  long735  阅读(223)  评论(0编辑  收藏  举报

导航