//12.3.2//運行環境VS2013//獲取本地IP
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")void main()
{
// 調用WSAStarup初始化WINsock庫
WSADATA wsaData;
::WSAStartup(
MAKEWORD(2,2),
&wsaData);// 存放主機名的緩沖區
char szHost[256]; // 取得本地主機名稱
::gethostname(szHost, 256);// 通過主機名得到地址信息,一個主機可能有多個網卡,多個IP地址
hostent *pHost = ::gethostbyname(szHost);in_addr addr;
int i;
for (i = 0;; i++)
{
//獲得地址(網絡字節序)
char *p = pHost->h_addr_list[i];
if (p == NULL)
{
break;
}// 將地址拷貝到in_addr結構體中
memcpy(&addr.S_un.S_addr, p, pHost->h_length);// 將in_addr轉換為主機字節序
char *strIp = ::inet_ntoa(addr);// 輸出
printf("本機IP[%d]:%s\n",i+1,strIp);
}// 終止對Winsock庫的使用
::WSACleanup();getchar();
}