如何在不依赖第三方服务器的情况下获取外部IP?

时间:2013-08-12 23:44:14

标签: routing ip ip-address nat

有没有办法在不在网络外建立连接的情况下检索外部IP地址?

也许通过某种方式询问路由器?

如果我在路由器后面,OS是否知道我有什么IP?

StackOverflow上的所有方法都推荐某种第三方提供商,但我希望我的应用程序独立于其他服务器。

编辑:我发现的最佳解决方案是:http://code.google.com/p/csharp-upnp-portmapper/

依赖UPnP。

1 个答案:

答案 0 :(得分:1)

如果路由器有一个web界面,你可以在路由器的web界面中获取状态页面,并从html中解析ip-adress。

PHP例证Telenor 4G路由器

<?php
$url = "http://192.168.0.1/platform.cgi?page=home.htm";
$page = file_get_contents($url);
preg_match("/IP Address: [^0-9]+(?<ip>[0-9]+(\.[0-9]+){3})</", $page, $matches);
$ip = $matches['ip'];
echo $ip
?>

由于大多数路由器都需要用户名和密码,因此您需要使用curl发布thouse,然后在登录后获取页面。