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 }