2016-09-14 6 views
2

POCO를 사용하여 공개 IP를 찾는 방법은 무엇입니까?POCO로 공용 IP 찾기

#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; 
} 

이것은, 그러나,이 개 주소를 반환 : their Network presentation의 6 페이지에서 영감을

, 나는 다음을 시도 하나의 IPv6 링크 - 로컬 (FE80 : ...) 한 개인 LAN의 IPv4 (10.0 ...). 내 공개 IP를 반환하지 않았습니다.

이 작업을 수행 할 수 있습니까?

답변

1

POCO를 사용하여 소프트웨어를 실행하는 호스트가 NAT를 사용하는 로컬 네트워크 내에있을 때 라우터의 WAN- 주소를 직접 가져올 수 없습니다 ("공용 IP "). 예를 들어 https://www.ipify.org/

과 같이 공개 서버의 API를 사용해야합니다.