#include <winsock2.h>
#pragma comment(lib, "WS2_32.lib")
//初始化Winsock库
class CInitSock
{
public:
CInitSock(BYTE minorVer = 2, BYTE majorVer = 2)
{
//初始化WS2_32.dll
WSADATA wsaData; // 用来返回DLL库的详细信息
WORD sockVersion = MAKEWORD(minorVer, majorVer);
//用来指向想要加载的Winsock库的版本 可用宏MAKEWORD(x, y) x:是高字节;y:是低字节
//加载winsock库 函数调用成功返回0
if (::WSAStartup(sockVersion, &wsaData) != 0)
{
exit(0);
}
}
~CInitSock()
{
::WSACleanup(); //释放winsock库
}
};
#include "initsock.h"
#include <stdio.h>
CInitSock initSock; //初始化WinSock库
void main()
{
char szHost[256];
::gethostname(szHost, 256); //获取本地主机名称
HOSTENT *pHost = ::gethostbyname(szHost); //通过主机名得到地址信息
in_addr addr;
//打印出所有ip地址
for (int i = 0; ; i++)
{
char *p = pHost->h_addr_list[i];
if (p == NULL)
{
break;
}
memcpy(&addr.S_un.S_addr, p, pHost->h_length);
char *szIp = ::inet_ntoa(addr);
printf("本机IP地址: %s\n", szIp);
}
}