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



有没有任何方法可以在不连接网络外部的情况下检索外部IP地址?

也许通过询问路由器?

如果我在路由器后面,操作系统知道我有什么IP吗?

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

编辑:我找到的最好的解决方案是:http://code.google.com/p/csharp-upnp-portmapper/

它们依赖UPnP。

如果路由器有网络接口,你可以在路由器的网络接口中获取状态页,并从html中解析ip地址。

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来张贴千页,然后在登录后获取页面。

相关内容

最新更新