For an external IP, I assume you mean the public address of a NAT setup. Since the NAT's IP isn't actually stored on the box running the code you'll have to contact some other box that will report the NAT address back to you. I'm not sure if there is a free service out there that will do that without requiring you to screen scrape, but if there is you might wind up using Poco::Net::HTTPRequest to fabricate a transmission that would cause the service to reply with your NAT's public IP.