【问题标题】:Android, how to deal with router ip changes?Android,如何处理路由器ip变化?
【发布时间】:2014-04-07 11:21:25
【问题描述】:

我有一个监听端口的应用程序。我已经获得了 WakeLock 以确保应用程序也在待机模式下监听。如果连接发生变化,应用程序会打开一个新端口进行侦听。但是,当路由器的 ip 更改时,确保应用程序打开/登录新端口的最佳方法是什么?当他们更改他们的 ip(到互联网)以通知他们的主机时,是否可能有一个包路由器发送?或者我是否必须定期检查路由器的 ip,如果它已经改变?如果是这样,我如何检索路由器的互联网 IP 地址?

【问题讨论】:

    标签: android ip router


    【解决方案1】:

    我不相信有办法知道路由器设备已更改其公共 IP,因此您必须自己轮询它。我想到了两件事你可以做

    • 获取免费的 DNS 重定向。大多数路由器支持某些no-ip.com 类型的配置,因此您在此处输入您的凭据,每次获取或重新启动时,它都会登录到您的DNS 重定向提供商并更新它指向的IP。因此,在一分钟内,您将能够 ping(或连接到)您的动态主机并知道新 IP。在这种情况下,如果您注册simon.no-ip.com,您将始终在此处获得当前的公开方向。不过,您必须检查您的路由器是否支持该功能。

    • 轮询某动态IP信息网站。有很多网站可以检索您当前的公共 IP 方向。您可以不时打开该网站并检查您的 IP 更新。一个示例网站是this

    【讨论】:

    • 感谢您的回答。我可能应该更详细地介绍。我正在开发的应用程序是一个信使。因此,使用动态 DNS 不是解决方案。如果服务器收到一条消息,它会将其转发到不同接收者登录的端口和 IP 地址。但如果接收者前面的路由器自上次登录后更改了 IP 地址,则直到下次登录时才会收到消息。我想避免定期向我的服务器发送消息。
    • 你考虑过使用Google Cloud Messaging吗?它完全符合您的描述,并且您摆脱了任何与网络相关的问题,因为 Google 已经管理将消息发送给订阅您的应用的收件人。
    • 以前不知道 Google Cloud Messaging。我会得到一些关于那个的信息。但就我正在开发一个应该信任的加密信使而言,将数据发送给谷歌并不是一个好主意。哪怕只是获取当前ip。谷歌仍然知道谁使用该服务以及他们何时登录。我还不知道,但我猜他们确实上传并保存了用户的其他数据......但我会考虑一下谢谢:)跨度>
    • 您是否想自己做某事取决于您,无论如何,如果您想了解更多信息,有一个答案可能会对您有所帮助:stackoverflow.com/questions/22503106/…第三者的安全性-派对应用程序是一个很长的主题,需要在这里讨论,但请考虑如果您必须管理客户的这些 IP 地址会面临的困难,并且还要考虑您的大多数用户已经使用了一些 Google 服务(据我所知知道这些消息没有被存储,至少没有公开)。
    • 是的,你给了我一些可能性,现在我必须决定使用哪一个。我想我会使用现有的 ip 查询站点,只要它们允许以编程方式使用它们或定期登录到我的服务器。现在我面临的问题是我的 WakeLock 似乎没有锁定。我经常在一个端口上监听。但是当屏幕关闭一段时间后,它就不再听了。锁定、开始侦听然后解锁的线程由 Service 中的另一个线程调用。
    猜你喜欢
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    相关资源
    最近更新 更多