获取本机IP地址 C/C++
在cmd中可以看到自己电脑正在使用的IP地址,如果有多个网卡,比如虚拟网卡就会有多个IP地址。
先来看看怎么得到正在使用的IP地址:
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#pragma comment(lib,"ws2_32.lib") //调用winsock函数的依赖库// 获取当前IP
void getIp(char *ip)
{if (WSAStartup(MAKEWORD(2, 2), &WSADATA()) != 0){printf("套接字库加载失败!\n");return;}struct hostent * host = gethostbyname("");if (host == NULL){printf("获取 IP地址失败!\n");return;}char *p = inet_ntoa(*(struct in_addr*)(*host->h_addr_list));strncpy(ip,p,strlen(p));WSACleanup();
}int main()
{char ip[20] = {0};getIp(ip);printf("%s\n",ip);system("pause");return 0;
}
获取所有的IP地址:
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#pragma comment(lib,"ws2_32.lib") //调用winsock函数的依赖库// 获取所有IP
void getAIps(char ip[][20])
{if (WSAStartup(MAKEWORD(2, 2), &WSADATA()) != 0){printf("套接字库加载失败!\n");return;}struct hostent * host = gethostbyname("");if (host == NULL){printf("获取 IP地址失败!\n");return;}int i = 0;while(host->h_addr_list[i] != NULL){char *p = inet_ntoa(*(struct in_addr*)(host->h_addr_list[i]));strncpy(*ip++, p, strlen(p));i++;}WSACleanup();
}int main()
{char allIp[10][20];memset(allIp, 0, sizeof(allIp));getAIps(allIp);for (int i = 0; allIp[i][0] != '\0'; i++){printf("%s\n", allIp[i]);}system("pause");return 0;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
