Windows c++获取本地ip

int GetLocalIp(vector<string> &vIp)

{

WSADATA wsaData;

int iRet = WSAStartup(((2 << 8) & 0xffff) | (2 & 0xff), &wsaData);

if (iRet != 0) {

std::cerr << "WSAStartup failed: " << iRet << std::endl;

return 1;

}

// 获取本机名

char hostname[256];

int result = gethostname(hostname, sizeof(hostname));

if (result != 0) {

std::cerr << "gethostname failed: " << WSAGetLastError() << std::endl;

WSACleanup();

return 1;

}

// 获取主机信息

struct hostent* phe = gethostbyname(hostname);

if (phe == nullptr) {

std::cerr << "gethostbyname failed: " << WSAGetLastError() << std::endl;

WSACleanup();

return 1;

}

// 遍历所有的IP地址

for (int i = 0; phe->h_addr_list[i] != 0; ++i) {

struct in_addr addr;

memcpy(&addr, phe->h_addr_list[i], sizeof(struct in_addr));

vIp.push_back(inet_ntoa(addr));

std::cout << "Local IP " << i + 1 << ": " << inet_ntoa(addr) << std::endl;

}

WSACleanup();

}

相关推荐
人道领域24 分钟前
JavaWeb从入门到进阶(HTTP协议的请求与响应)
网络·网络协议·http
wenjianhai1 小时前
WebSocket调试工具---Apifox
网络·websocket·网络协议
guangshui5161 小时前
2034.Advanced IP scanner软件扫描 ubuntu的ip地址
网络协议·tcp/ip·ubuntu
lbb 小魔仙2 小时前
【Harmonyos】开源鸿蒙跨平台训练营DAY3:为开源鸿蒙跨平台工程集成网络请求能力,实现数据清单列表的完整构建与开源鸿蒙设备运行验证(及常见问题与方法)
windows·开源·harmonyos·鸿蒙·开源鸿蒙·鸿蒙开平台应用
秋月的私语2 小时前
Windows系统下Git换行符问题的完整解决方案
windows·git
REDcker2 小时前
WebSocket 协议详解 (RFC 6455)
网络·websocket·网络协议
怜渠客2 小时前
【原创工具】Excel像素画生成 By怜渠客
windows·实用工具·怜渠客
极安代理2 小时前
HTTP代理IP如何提升爬虫采集效率?
爬虫·tcp/ip·http
23124_802 小时前
HTTPS中间人攻击
网络·网络协议·https
weixin_489690022 小时前
MicroSIP自定义web拨打协议
服务器·前端·windows