首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++ - getaddrinfo() -使用动态dns获取自己的外部IP失败

C++ - getaddrinfo() -使用动态dns获取自己的外部IP失败
EN

Stack Overflow用户
提问于 2015-01-25 17:41:28
回答 1查看 528关注 0票数 0

我目前正在开发一个程序,它告诉我,除其他外,我的外部IP。为了实现这一点,我使用了函数getaddrinfo()

为了测试目的,我将google.com作为节点名传递给了它,它工作得很好。

如果我将动态dns传递给该函数,我将接收作为IP的0.0.0.0,但我希望获得自己的外部IP。我还尝试了一个来自朋友的动态dns,结果也是一样的。

就我从google.com获得IP而言,问题不应该是我的代码。

getaddrinfo() 从动态dns接收IP是不可能的,还是我做错了什么?

编辑:

代码语言:javascript
运行
复制
WSADATA wsaD {};
addrinfo hints = {AI_NON_AUTHORITATIVE, AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, NULL, NULL, NULL};
addrinfo *infoAddress;
WSAStartup(MAKEWORD(2, 2), &wsaD);
getaddrinfo("daniel-nas.computer", "80", &hints, &infoAddress);
struct sockaddr_in *ipAddress = reinterpret_cast<sockaddr_in*>&infoAddress->ai_addr);
inet_ntop(AF_INET, &ipAddress->sin_addr.s_addr, IP, sizeof(IP));
WSACleanup();

IP是全局定义的:char IP[INET_ADDRSTRLEN];

还有其他人来解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-26 16:43:36

溶液

作为一种解决方案,我使用函数gethostbyname()。尽管如此,我对它并不满意,因为这个函数被废弃了,但是我现在可以获得我的IP了。因此,我认为问题要么是我的代码,尽管我可以解决其他主机名,要么是函数getaddrinfo()和DDNS的组合。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28139415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档