gpt4 book ai didi

c++ - 显示 IPv6 地址

转载 作者:行者123 更新时间:2023-11-30 03:44:28 26 4
gpt4 key购买 nike

我正在编写一个程序来显示机器的本地 IP 地址。我可以显示 IPv4 地址,但无法显示 IPv6 地址。下面是我用来显示 IPv4 地址的程序:

#include <iostream.h>
#include <winsock.h>

int doit(int, char **)
{
char ac[80];
if (gethostname(ac, sizeof(ac)) == SOCKET_ERROR) {
cerr << "Error " << WSAGetLastError() <<
" when getting local host name." << endl;
return 1;
}
cout << "Host name is " << ac << "." << endl;

struct hostent *phe = gethostbyname(ac);
if (phe == 0) {
cerr << "Yow! Bad host lookup." << endl;
return 1;
}

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));
cout << "Address " << i << ": " << inet_ntoa(addr) << endl;
}

return 0;
}

int main(int argc, char *argv[])
{
WSAData wsaData;
if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0) {
return 255;
}

int retval = doit(argc, argv);

WSACleanup();

return retval;
}

最佳答案

gethostbyname 已过时,在许多系统上会忽略 IPv6 条目。

使用现代 getaddrinfo函数并检查 ai_family 成员的 AI_INETAI_INET6 以识别地址类型。

关于c++ - 显示 IPv6 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35408630/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com