获得本地IP地址
2016-05-05 15:55
435 查看
#include <winsock2.h> #pragma comment(lib,"wsock32.lib") typedef struct tagIPInfo { char ip[30]; }IPInfo; bool GetLocalIPs(IPInfo* ips, int maxCnt, int* cnt) { //1.初始化wsa WSADATA wsaData; int ret = WSAStartup(MAKEWORD(2, 2), &wsaData); if (ret != 0) { return false; } //2.获取主机名 char hostname[256]; ret = gethostname(hostname, sizeof(hostname)); if (ret == SOCKET_ERROR) { return false; } //3.获取主机ip HOSTENT* host = gethostbyname(hostname); if (host == NULL) { return false; } //4.逐个转化为char*并拷贝返回 *cnt = host->h_length < maxCnt ? host->h_length : maxCnt; for (int i = 0; i < *cnt; i++) { in_addr* addr = (in_addr*)*host->h_addr_list; strcpy(ips[i].ip, inet_ntoa(addr[i])); } return true; } bool GetLocalIP(char* ip) { //1.初始化wsa WSADATA wsaData; int ret = WSAStartup(MAKEWORD(2, 2), &wsaData); if (ret != 0) { return false; } //2.获取主机名 char hostname[256]; ret = gethostname(hostname, sizeof(hostname)); if (ret == SOCKET_ERROR) { return false; } //3.获取主机ip HOSTENT* host = gethostbyname(hostname); if (host == NULL) { return false; } //4.转化为char*并拷贝返回 strcpy(ip, inet_ntoa(*(in_addr*)*host->h_addr_list)); return true; } int main() { char szIP[16] = { 0 }; GetLocalIP(szIP); IPInfo ipInfo[20]; int ipCount = 0; memset(ipInfo, 0, sizeof(ipInfo)); GetLocalIPs(a, 10, &ipCount); }
相关文章推荐
- ImageMagick 严重漏洞导致大量网站面临被黑风险
- XML与HTML的设计区别
- 读取文本字符串,并生成以字符串命名的txt文件
- Struts2中的OGNL详解
- 页面渲染——页面合成(composition)的优化
- 设计模式--单例模式
- springboot log4j2配置
- JAVA泛型简析
- allocator类
- spark读取oracle的
- android内存优化的建议
- Process 2(完成版)
- 什么是事件驱动编程风格?
- Android基础 | 控件基础 | Listview之BaseAdapter①
- (礼拜四log)前端开发,使用jq的.css函数添加属性时!important要注意的问题
- 欢迎使用CSDN-markdown编辑器
- swift开发网络篇—利用NSURLSession 发送GET和POST请求
- CodeForces 659E New Reform (DFS)
- ajax与302响应
- CME-M5系列(二)——快速入门