使用 POCO 查找 public IP
Find public IP with POCO
如何使用 POCO 找到我的 public IP?
受到 their Network presentation 第 6 页的启发,我尝试了以下方法:
#include "Poco/Net/DNS.h"
#include <iostream>
using Poco::Net::DNS;
using Poco::Net::HostEntry;
int main(int argc, char** argv)
{
const HostEntry& entry = DNS::thisHost();
std::cout << "Canonical Name: " << entry.name() << std::endl;
const HostEntry::AliasList& aliases = entry.aliases();
HostEntry::AliasList::const_iterator alias_it = aliases.begin();
for (; alias_it != aliases.end(); ++alias_it)
std::cout << "Alias: " << *alias_it << std::endl;
const HostEntry::AddressList& addrs = entry.addresses();
HostEntry::AddressList::const_iterator addr_it = addrs.begin();
for (; addr_it != addrs.end(); ++addr_it)
std::cout << "Address: " << addr_it->toString() << std::endl;
return 0;
}
然而,这 return 编辑了两个地址:一个 IPv6 link-local (fe80:...) 和一个私有 LAN IPv4 (10.0...)。它没有 return 我的 public IP。
这可以做到吗?
当主机 运行 使用 POCO 的软件位于使用 NAT 的本地网络内时,无法直接获取路由器的 WAN-Address (我猜你的意思是当使用术语 "my public IP").
相反,您必须使用 public 服务器的 API 返回您的 IP 地址,例如:https://www.ipify.org/
如何使用 POCO 找到我的 public IP?
受到 their Network presentation 第 6 页的启发,我尝试了以下方法:
#include "Poco/Net/DNS.h"
#include <iostream>
using Poco::Net::DNS;
using Poco::Net::HostEntry;
int main(int argc, char** argv)
{
const HostEntry& entry = DNS::thisHost();
std::cout << "Canonical Name: " << entry.name() << std::endl;
const HostEntry::AliasList& aliases = entry.aliases();
HostEntry::AliasList::const_iterator alias_it = aliases.begin();
for (; alias_it != aliases.end(); ++alias_it)
std::cout << "Alias: " << *alias_it << std::endl;
const HostEntry::AddressList& addrs = entry.addresses();
HostEntry::AddressList::const_iterator addr_it = addrs.begin();
for (; addr_it != addrs.end(); ++addr_it)
std::cout << "Address: " << addr_it->toString() << std::endl;
return 0;
}
然而,这 return 编辑了两个地址:一个 IPv6 link-local (fe80:...) 和一个私有 LAN IPv4 (10.0...)。它没有 return 我的 public IP。
这可以做到吗?
当主机 运行 使用 POCO 的软件位于使用 NAT 的本地网络内时,无法直接获取路由器的 WAN-Address (我猜你的意思是当使用术语 "my public IP").
相反,您必须使用 public 服务器的 API 返回您的 IP 地址,例如:https://www.ipify.org/