有没有任何方法可以在不连接网络外部的情况下检索外部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来张贴千页,然后在登录后获取页面。