豌豆Ai站群搜索引擎系统 V.25.10.25 网址:www.wd.chat

🗣 Wd提问: c++获取本机ip

🤖 Ai回答:
在 C++ 中获取本机 IP 地址(特别是本地局域网 IP,如 `192.168.x.x`)可以通过调用操作系统的网络 API 实现。由于不同平台(Windows 和 Linux/macOS)的 API 不同,我们需要分别处理。

下面是一个跨平台的示例代码,使用标准 C++ 和系统网络库来获取本机 IP 地址。

✅ 跨平台获取本机 IP(支持 Windows 和 Linux/macOS)

cpp
include <iostream
include <string
ifdef _WIN32
include <winsock2.h
include <ws2tcpip.h
include <iphlpapi.h
pragma comment(lib, ws2_32.lib)
pragma comment(lib, iphlpapi.lib)
else
include <sys/socket.h
include <ifaddrs.h
include <netinet/in.h
include <arpa/inet.h
include <net/if.h
endif

std::string getLocalIP() {
std::string ip = 127.0.0.1;

ifdef _WIN32
// Windows 版本
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
return ip;
}

char hostname[256];
if (gethostname(hostname, sizeof(hostname)) == SOCKET_ERROR) {
WSACleanup();
return ip;
}

struct addrinfo *result = nullptr;
if (getaddrinfo(hostname, nullptr, nullptr, &result) != 0) {
WSACleanup();
return ip;
}

for (struct addrinfo *ptr = result; ptr != nullptr; ptr = ptr-ai_next) {
if (ptr-ai_family == AF_INET) {
struct sockaddr_in *addr = (struct sockaddr_in*)ptr-ai_addr;
char ip_str[INET_ADDRSTRLEN];
inet_ntop(AF_INET, &(addr-sin_addr), ip_str, INET_ADDRSTRLEN);
std::string temp_ip(ip_str);
// 排除回环地址
if (temp_ip.substr(0, 3) != 127 && temp_ip.substr(0, 4) != 169.) {
ip = temp_ip;
break;
}
}
}

freeaddrinfo(result);
WSACleanup();

else
// Linux / macOS 版本
struct ifaddrs *ifaddrs_ptr = nullptr;
if (getifaddrs(&ifaddrs_ptr) == -1) {
return ip;
}

for (struct ifaddrs *ifa = ifaddrs_ptr; ifa != nullptr; ifa = ifa-ifa_next) {
if (ifa-ifa_addr == nullptr) continue;
if (ifa-ifa_addr-sa_family == AF_INET) {
struct sockaddr_in *addr = (struct sockaddr_in*)ifa-ifa_addr;
char ip_str[INET_ADDRSTRLEN];
inet_ntop(AF_INET, &(addr-sin_addr), ip_str, INET_ADDRSTRLEN);
std::string temp_ip(ip_str);
// 排除回环接口和无效地址
if (std::string(ifa-ifa_name) != lo && temp_ip.substr(0, 3) != 127 && temp_ip.substr(0, 4) != 169.) {
ip = temp_ip;
break;
}
}
}

freeifaddrs(ifaddrs_ptr);
endif

return ip;
}

int main() {
std::string localIP = getLocalIP();
std::cout << Local IP: << localIP << std::endl;
return 0;
}

🔧 编译说明

在 Linux/macOS 上:
bash
g++ -o getip getip.cpp
./getip

在 Windows 上(使用 Visual Studio 或 MinGW):
bash
g++ -o getip.exe getip.cpp -lws2_32 -liphlpapi

📌 注意事项

此方法获取的是非回环、非链路本地的第一个 IPv4 地址。
如果机器有多个网卡(如 Wi-Fi、以太网),只会返回第一个符合条件的。
`169.254.x.x` 是链路本地地址(无 DHCP),通常应排除。
若需获取所有 IP,可修改为返回 `std::vector<std::string`。

✅ 示例输出

Local IP: 192.168.1.100

如果你希望更简单的方式(但依赖外部命令),也可以执行 `ipconfig`(Windows)或 `ifconfig`/`hostname -I`(Linux)并解析输出,但不推荐用于生产环境。

如需更高级功能(如指定网卡、IPv6 支持等),可进一步扩展。

需要我提供“获取所有 IP”或“按网卡名称获取 IP”的版本吗?

Ai作答

📣 商家广告


高防vps

八字

起名

广告招商

算命


0

IP地址: 176.86.157.20

搜索次数: 0

提问时间: 2025-11-07 00:26:27

🛒 域名购买
pcks.cn
82.chat
ndgj.cn
souzi.com.cn
mmmf.com.cn
psyshake.com
yk.gs
cgbc.cn
qn.gs
sxny.net

❓️ 热门提问
虚拟主机建站
6000电脑主机
白嫖云服务器
云计算含义是什么
域名购买哪里好
批量建群
站群平台用户增长计划
服务器器国外
服务器选择什么好
便宜的云电脑
豌豆Ai站群搜索引擎系统

🌐 域名评估
oo.sd.cn
dp.sh.cn
iveh.cn
nn.gd.cn
qftg.cn
Nav.Top
vivo.bj.cn
xphone.gold
853.cn
vance.ren

⛏ 最新挖掘
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜

🖌 热门作画

🤝 关于我们:
豌豆Ai 域名 建站 站群 留痕 推广 评估 源码
开发Ai 工具 日记 价格 加盟 广告 流量 留言 联系

🗨 加入群聊
群

🔗 友情链接
搜全网  乐山网站推广  ai提问

🧰 站长工具
Ai工具  whois查询  搜索

📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。

👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。

上一篇 71758 71759 71760 下一篇