【发布时间】:2014-04-07 11:21:25
【问题描述】:
我有一个监听端口的应用程序。我已经获得了 WakeLock 以确保应用程序也在待机模式下监听。如果连接发生变化,应用程序会打开一个新端口进行侦听。但是,当路由器的 ip 更改时,确保应用程序打开/登录新端口的最佳方法是什么?当他们更改他们的 ip(到互联网)以通知他们的主机时,是否可能有一个包路由器发送?或者我是否必须定期检查路由器的 ip,如果它已经改变?如果是这样,我如何检索路由器的互联网 IP 地址?
【问题讨论】:
我有一个监听端口的应用程序。我已经获得了 WakeLock 以确保应用程序也在待机模式下监听。如果连接发生变化,应用程序会打开一个新端口进行侦听。但是,当路由器的 ip 更改时,确保应用程序打开/登录新端口的最佳方法是什么?当他们更改他们的 ip(到互联网)以通知他们的主机时,是否可能有一个包路由器发送?或者我是否必须定期检查路由器的 ip,如果它已经改变?如果是这样,我如何检索路由器的互联网 IP 地址?
【问题讨论】:
我不相信有办法知道路由器设备已更改其公共 IP,因此您必须自己轮询它。我想到了两件事你可以做
获取免费的 DNS 重定向。大多数路由器支持某些no-ip.com 类型的配置,因此您在此处输入您的凭据,每次获取或重新启动时,它都会登录到您的DNS 重定向提供商并更新它指向的IP。因此,在一分钟内,您将能够 ping(或连接到)您的动态主机并知道新 IP。在这种情况下,如果您注册simon.no-ip.com,您将始终在此处获得当前的公开方向。不过,您必须检查您的路由器是否支持该功能。
轮询某动态IP信息网站。有很多网站可以检索您当前的公共 IP 方向。您可以不时打开该网站并检查您的 IP 更新。一个示例网站是this。
【讨论】:
Google Cloud Messaging吗?它完全符合您的描述,并且您摆脱了任何与网络相关的问题,因为 Google 已经管理将消息发送给订阅您的应用的收件人。